Discussion:
unexpected tag 90
saender
2002-11-26 02:36:20 UTC
Permalink
Hi,

i've been using rsync for about 3 years to keep common a set of shared
applications on 40 linux boxes. No problems with it on redhat 6.2, but
now I have about 4 redhat 7.3 boxes and the rest 7.2 and when I try to
rsync the common directory I am getting 'unexpected tag 90' errors.

the command I am running is:
strace /usr/bin/rsync -e ${SSH} -avx --delete --exclude \"lost+found\"

where ${SSH} is set to /usr/bin/ssh

strace shows this:

select(5, NULL, [4], NULL, {60, 0}) = 1 (out [4], left {60, 0})
write(4, "log\246\t\0\0>\34\4pool\313e\0\0\305\362\3408>\33\6mf."...,
218) = 218
select(6, [5], NULL, NULL, {60, 0}) = 1 (in [5], left {60, 0})
read(5, "sysa", 4) = 4
write(2, "unexpected tag 90\n", 18unexpected tag 90
) = 18
rt_sigaction(SIGUSR1, {SIG_IGN}, {0x8050f90, [USR1],
SA_RESTART|0x4000000}, 8) = 0rt_sigaction(SIGUSR2, {SIG_IGN},
{0x8050fb0, [USR2], SA_RESTART|0x4000000}, 8) = 0wait4(22612,
0xbfff613c, WNOHANG, NULL) = 0
getpid() = 22611
kill(22612, SIGUSR1) = 0
--- SIGCHLD (Child exited) ---
wait4(-1, NULL, WNOHANG, NULL) = 22612
wait4(-1, NULL, WNOHANG, NULL) = -1 ECHILD (No child processes)
sigreturn() = ? (mask now [])
write(2, "rsync error: error in rsync prot"..., 72rsync error: error in
rsync protocol data stream (code 12) at io.c(299)
) = 72
_exit(12) = ?



No files are being synced. This seems to happen during or just after
the 'building file list' stage.

running w/ -vvvv shows it hanging in different places on different
machines, though always in the same place when run again on the same
machine.

can anybody help? what does tag 90 mean?

thanks,

sandy clark
Craig Barratt
2002-11-26 13:41:01 UTC
Permalink
Post by saender
can anybody help? what does tag 90 mean?
It looks like the sender and receiver are getting out of sync while
the file list is being sent. The data sent in blocks. Each block
starts with an 8 bit tag and a 24 bit length. The valid values of
the tag are 7,8,9,10. Any other value (eg: 90) produces an error.
See read_unbuffered() in io.c. Your strace shows:

read(5, "sysa", 4)

This should be the tag and length, which is clearly wrong. The 90
is 'a' - 7.

Beyond this, I don't know why this is happening. One completely random
thought: what is the LANG setting in /etc/sysconfig/i18n on the client
machines? If it is UTF-8 I would suggest trying it with "en_US":

LANG="en_US"

Other than that, I would suggest running gdb or adding debug statements
to see where it gets out of sync.

Craig

Loading...