On Tue, Apr 09, 2002 at 05:49:13PM +0300, Jarkko Hietaniemi wrote:
> Thanks. It's all coming back to me now...
>
> > # bad offset 205032704, want 4500000000
> > # 32-bit wraparound suspected in tell() since
> > # 4500000000 - unpack('L', pack('L', 4500000000)) - 1 equals 205032704.
> > not ok 6
>
> Seems almost like that seek() is largefile (64-bit) but tell() isn't!
> (it's 32-bit) Could you try running the test under strace(1) and see
> what system calls it is using?
It looks like it isn't using *any* system call for the tell. Here's
the trace for tests 5 - 12:
open("big", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0600, st_size=5000000003, ...}) = 0
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0600, st_size=5000000003, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x40016000
_llseek(3, 4499996672, [4499996672], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 3328) = 3328
write(1, "ok 5\n", 5) = 5
write(1, "# bad offset 205032704, want 450"..., 40) = 40
write(1, "# 32-bit wraparound suspected in"..., 46) = 46
write(1, "# 4500000000 - unpack(\'L\', pack("..., 72) = 72
write(1, "not ", 4) = 4
write(1, "ok 6\n", 5) = 5
_llseek(3, 4499996672, [4499996672], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096
write(1, "ok 7\n", 5) = 5
brk(0x8185000) = 0x8185000
write(1, "# bad offset 205032705, want 450"..., 40) = 40
write(1, "# 32-bit wraparound suspected in"..., 46) = 46
write(1, "# 4500000001 - unpack(\'L\', pack("..., 72) = 72
write(1, "not ", 4) = 4
write(1, "ok 8\n", 5) = 5
_llseek(3, 4500000768, [4500000768], SEEK_SET) = 0
write(1, "ok 9\n", 5) = 5
write(1, "# bad offset 205032704, want 450"..., 40) = 40
write(1, "# 32-bit wraparound suspected in"..., 46) = 46
write(1, "# 4500000000 - unpack(\'L\', pack("..., 72) = 72
write(1, "not ", 4) = 4
write(1, "ok 10\n", 6) = 6
fstat64(3, {st_mode=S_IFREG|0600, st_size=5000000003, ...}) = 0
_llseek(3, 4999999488, [4999999488], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 515
write(1, "ok 11\n", 6) = 6
write(1, "# bad offset 705032704, want 500"..., 40) = 40
write(1, "# 32-bit wraparound suspected in"..., 46) = 46
write(1, "# 5000000000 - unpack(\'L\', pack("..., 72) = 72
write(1, "not ", 4) = 4
write(1, "ok 12\n", 6) = 6
> > ext/ODBM_File/odbm:
> > ../perl: error in loading shared libraries: ../lib/auto/ODBM_File/ODBM_File.so:
>undefined symbol: dbminit
> > --------------------------------------------------------------------------------
> > lib/Memoize/t/errors
> > ../perl: error in loading shared libraries: ../lib/auto/ODBM_File/ODBM_File.so:
>undefined symbol: dbminit
> > --------------------------------------------------------------------------------
>
> DBM shared libraries broken?
Maybe. But the installed perl 5.6.0 doesn't have this problem. It'll run
the test file.
Abigail