David Eisner
2008-May-29 19:19 UTC
[Samba] Test Failure for RW1 with samba-3.0.30, Solaris 9
I'm trying to build and install Samba 3.0.30 on a Solaris 9 SPARC machine. When I do a "make test", the RW1 test is failing. If I go back and configure and build 3.0.28 with the same settings, and do a make test, everything passes. Here's what I'm seeing with 3.0.30: ---8<--- Testing RW1 (0) TEST OUTPUT: host=127.0.0.2 share=tmp user=root myname=cannes Running RW1 starting readwritetest unlink failed (NT_STATUS_OBJECT_NAME_NOT_FOUND) (normal, this file should not exist) Passed readwritetest v1: Yes unlink failed (NT_STATUS_OBJECT_NAME_NOT_FOUND) (normal, this file should not exist) read failed (Read error: Error 0) read -1, expected 130534 close failed (Read error: Error 0) close failed (Read error: Error 0) unlink failed (Read error: Error 0) Passed readwritetest v2: No tdis failed (Read error: Error 0) TEST RW1 FAILED! RW1 took 18.458818 secs TEST FAILED: /export/data/software/cradle/build/samba-3.0.30/source/bin/smbtorture //127.0.0.2/tmp -Uroot%test RW1 (status 1) --->8--- Any pointers where to look next? I can see in the test that it's failing on a cli_read() in rw_torture2(), but I don't know why. I looked at st/smbd_test.log, but there are no errors there. Thanks. -David -- David Eisner http://cradle.brokenglass.com
David Eisner
2008-Jun-02 15:38 UTC
[Samba] Re: Test Failure for RW1 with samba-3.0.30, Solaris 9
On Thu, May 29, 2008 at 3:19 PM, David Eisner <deisner@gmail.com> wrote:> I'm trying to build and install Samba 3.0.30 on a Solaris 9 SPARC machine. > > When I do a "make test", the RW1 test is failing. If I go back and > configure and build 3.0.28 with the same settings, and do a make test, > everything passes. Here's what I'm seeing with 3.0.30:More information, hoping one of the developers might point me in the right direction (or tell me to file a bug report): RW1 is implemented with torture.c:run_readwritetest(), which calls rw_torture2(). This in turn runs through a loop where it writes and reads randomly sized chunks of data. When this buffer size is larger than about 130K, the error occurs. Here is the call stack: 1 1 rw_torture2 1 torture/torture.c 2 1 cli_read 619 torture/torture.c 3 1 cli_receive_smb 102 libsmb/clireadwrite.c 4 1 client_receive_smb 94 libsmb/clientgen.c 5 1 receive_smb_raw 61 libsmb/clientgen.c Here is an example of the problem, with some debugging statements I added into the code: ##DRE: rw_torture2: cli_read, buf_size == 130388 ##DRE: cli_read: size = 130388 ##DRE: receive_smb_raw: Invalid packet length! len == (130107 bytes), buflen == (130048). ##DRE: receive_smb_raw: returning False 1 ##DRE: client_receive_smb: returning 0 ##DRE: cli_receive_smb: returning ret 0: 0 ##DRE: cli_read: Returning -1 1 read failed (Read error: Error 0) read -1, expected 130388 Here's where the problem begins, in receive_smb_raw: BOOL receive_smb_raw(int fd, char *buffer, size_t buflen, unsigned int timeout) { ssize_t len,ret; smb_read_error = 0; len = read_smb_length_return_keepalive(fd,buffer,timeout); // ... if (len > buflen) { //... My interpretation of this is that the length of the packet read form the server is larger than the buffer length specified in cli->bufsize, and that this is "bad." Where should I look next? Thanks. -David -- David Eisner http://cradle.brokenglass.com