Program not being executed at all
Kostik Belousov
kostikbel at gmail.com
Sat Dec 30 06:31:17 PST 2006
On Sat, Dec 30, 2006 at 11:15:59AM -0300, Alejandro Pulver wrote:
> On Sat, 30 Dec 2006 14:21:50 +0200
> Kostik Belousov <kostikbel at gmail.com> 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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20061230/d1864bbd/attachment.pgp
More information about the freebsd-hackers
mailing list