DTrace 32 bit on 64 bit machine?
Shrikanth Kamath
shrikanth07 at gmail.com
Mon Jun 25 21:56:02 UTC 2012
Can the DTrace user space application compiled as 32 bit app be run on
machine with x86_64 kernel
I have this DTrace port done for code base based on FreeBSD 6.1, and
the app is crashing on the amd64 machine with assert
Assertion failed: (fsz > 0), function _libelf_getphdr, file
../../../../src/bsd/lib/libelf/libelf_phdr.c, lie 83.
I do not have the user space DTrace enabled. Pretty much stuff picked
up from FreeBSD 8.1
Looking at libdtrace code, there is this section in function "dt_module_update",
#if defined(__i386__)
/*
* Find the first load section and figure out the relocation
* offset for the symbols. The kernel module will not need
* relocation, but the kernel linker modules will.
*/
for (i = 0; gelf_getphdr(dmp->dm_elf, i, &ph) != NULL; i++) {
But the actual failure is because of faulty elf header...
#2 0xc822bb02 in abort () from /usr/lib/libc.so.6
#3 0xc8205aea in __assert from /usr/lib/libc.so.6
#4 0xc812fbb4 in _libelf_getphdr (e=0xffefc4c4, ec=2) at
libelf_phdr.c:83 <<== The same is not getting passed
down, 'e' is now different and gibberish.
#5 0xc812c3ac in gelf_getphdr (e=0x805df80, index=0, ...) at
libelf/gelf_phdr.c:87 <<== The struct _Elf 'e' is sane
#6 0xc80ea26c in dt_module_update at dt_module.c:934
But the elf header read from the kernel module is sane.
More information about the freebsd-hackers
mailing list