On Sat, Dec 30, 2006 at 11:15:59AM -0300, Alejandro Pulver wrote: > On Sat, 30 Dec 2006 14:21:50 +0200 > Kostik Belousov <[EMAIL PROTECTED]> wrote: > > > On Sat, Dec 30, 2006 at 02:47:18AM -0300, Alejandro Pulver wrote: > > > Hello. > > > > > > I tried to update the port I maintain "games/quake2max", a Quake II > > > engine, but when I try to run the compiled executables, except for > > > the dedicated server (quake2max-ded) they output "Abort" and quit. > > > > > > The output of 'ktrace' is the following (it just stops before running > > > it): > > > > > > 82753 ktrace RET ktrace 0 > > > 82753 ktrace CALL execve(0xbfbfe320,0xbfbfe844,0xbfbfe84c) > > > 82753 ktrace NAMI "/sbin/quake2max" > > > 82753 ktrace RET execve -1 errno 2 No such file or directory > > > 82753 ktrace CALL execve(0xbfbfe320,0xbfbfe844,0xbfbfe84c) > > > 82753 ktrace NAMI "/bin/quake2max" > > > 82753 ktrace RET execve -1 errno 2 No such file or directory > > > 82753 ktrace CALL execve(0xbfbfe320,0xbfbfe844,0xbfbfe84c) > > > 82753 ktrace NAMI "/usr/sbin/quake2max" > > > 82753 ktrace RET execve -1 errno 2 No such file or directory > > > 82753 ktrace CALL execve(0xbfbfe320,0xbfbfe844,0xbfbfe84c) > > > 82753 ktrace NAMI "/usr/bin/quake2max" > > > 82753 ktrace RET execve -1 errno 2 No such file or directory > > > 82753 ktrace CALL execve(0xbfbfe320,0xbfbfe844,0xbfbfe84c) > > > 82753 ktrace NAMI "/usr/games/quake2max" > > > 82753 ktrace RET execve -1 errno 2 No such file or directory > > > 82753 ktrace CALL execve(0xbfbfe320,0xbfbfe844,0xbfbfe84c) > > > 82753 ktrace NAMI "/usr/local/sbin/quake2max" > > > 82753 ktrace RET execve -1 errno 2 No such file or directory > > > 82753 ktrace CALL execve(0xbfbfe320,0xbfbfe844,0xbfbfe84c) > > > 82753 ktrace NAMI "/usr/local/bin/quake2max" > > > > > > Interestingly 'ldd' also crashes when examining it, outputting the > > > following (however 'ktrace' has more information): > > > > > > /usr/local/bin/quake2max: > > > /usr/local/bin/quake2max: signal 6 > > > > > > My first thought was that it was a GCC bug, so I tried compiling it > > > with 4.1 (my system is a FreeBSD 6.1-RELEASE-p1 with GCC 3.4.4 > > > 20050518) but it made no difference. > > > > > > Interestingly the actual "games/quake2max" port works just fine > > > (version 0.44), and I couldn't see something suspicious with a quick > > > look to the 'diff' output. I have attached a patch to update the port > > > in the tree to the 0.45 version. > > > > > > Could someone investigate this please? > > > > > > Thanks and Best Regards, > > > Ale > > > > > > P.S.: please CC me since I am not subscribed to the list. > > > > Please, show the output of the commands > > file /usr/local/bin/quake2max > > readelf -ld /usr/local/bin/quake2max > > > > > > Hello. > > Thank you for your reply. > > Here is the output: > > % file /usr/local/bin/quake2max > /usr/local/bin/quake2max: ELF 32-bit LSB executable, Intel 80386, version 1 > (FreeBSD), for FreeBSD 6.1, dynamically linked (uses shared libs), stripped > > % readelf -ld /usr/local/bin/quake2max > Elf file type is EXEC (Executable file) > Entry point 0x80497d0 > There are 6 program headers, starting at offset 52 > > Program Headers: > Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align > PHDR 0x000034 0x08048034 0x08048034 0x000c0 0x000c0 R E 0x4 > INTERP 0x0000f4 0x080480f4 0x080480f4 0x00015 0x00015 R 0x1 > [Requesting program interpreter: /libexec/ld-elf.so.1] > LOAD 0x000000 0x08048000 0x08048000 0x72875 0x72875 R E 0x1000 > LOAD 0x073000 0x080bb000 0x080bb000 0x02cc4 0x28a20e34 RW 0x1000 > DYNAMIC 0x075a70 0x080bda70 0x080bda70 0x000c0 0x000c0 RW 0x4 > NOTE 0x00010c 0x0804810c 0x0804810c 0x00018 0x00018 R 0x4 > > Section to Segment mapping: > Segment Sections... > 00 > 01 .interp > 02 .interp .note.ABI-tag .hash .dynsym .dynstr .rel.dyn .rel.plt .init > .plt .text .fini .rodata > 03 .data .eh_frame .dynamic .ctors .dtors .jcr .got .bss > 04 .dynamic > 05 .note.ABI-tag > > Dynamic segment at offset 0x75a70 contains 19 entries: > Tag Type Name/Value > 0x00000001 (NEEDED) Shared library: [libm.so.4] > 0x00000001 (NEEDED) Shared library: [libz.so.3] > 0x00000001 (NEEDED) Shared library: [libc.so.6] > 0x0000000c (INIT) 0x80491dc > 0x0000000d (FINI) 0x80b1748 > 0x00000004 (HASH) 0x8048124 > 0x00000005 (STRTAB) 0x8048b5c > 0x00000006 (SYMTAB) 0x804846c > 0x0000000a (STRSZ) 878 (bytes) > 0x0000000b (SYMENT) 16 (bytes) > 0x00000015 (DEBUG) 0x0 > 0x00000003 (PLTGOT) 0x80bdb44 > 0x00000002 (PLTRELSZ) 744 (bytes) > 0x00000014 (PLTREL) REL > 0x00000017 (JMPREL) 0x8048ef4 > 0x00000011 (REL) 0x8048ecc > 0x00000012 (RELSZ) 40 (bytes) > 0x00000013 (RELENT) 8 (bytes) > 0x00000000 (NULL) 0x0 > > Best Regards, > Ale
Signal 6 is sent by elf image activator upon exec() when old address space is destroyed, but new image cannot be loaded. In your case, I guess that extra large bss section size (where uninitialized global/static variables are placed) causes loader to fail: > Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align > LOAD 0x073000 0x080bb000 0x080bb000 0x02cc4 0x28a20e34 RW 0x1000 Look at MemSiz column. VirtAddr + MemSiz >= 0x30000000, and elf interpreter (/libexec/ld-elf.so.1) is usually mmapped at 0x28000000. Look at the source for huge global arrays/objects.
pgpNzKyx7Brqm.pgp
Description: PGP signature