Signal 12 on simple ldd / Linux

Tuc at T-B-O-H.NET ml at t-b-o-h.net
Thu Sep 27 11:17:39 PDT 2007


> 
> On Thu, Sep 27, 2007 at 01:00:42PM -0400, Tuc at T-B-O-H.NET wrote:
> > Hi,
> > 
> > 	FreeBSD 5.3-RELEASE-p10 (Yea, I know, there are reasons)
> > 	/proc and /linprocfs are mounted onto a point under an NFS mount point
> > 		(This shouldn't matter since the fs is local still, no?)
> > 
> > 	When trying to ldd a binary, I get a signal 12. When I truss
> > it, the last bits I get are :
> > 
> > 82825: linux_mmap(0xbfbfe82c)                    = 675115008 (0x283d7000)
> > 82825: #243()                                    ERR#78 'Function not implemente
> > d'
> > SIGNAL 12 (SIGSYS)
> > SIGNAL 12 (SIGSYS)
> > Process stopped because of:  16
> > process exit, rval = 140
> > Bad system call
> 
> syscall 243 is set_thread_area.. TLS stuff. It was implemented in 7-current.
> 
	(BTW: By now everyone I hope realizes I ended up trying to run the program,
not ldd it.... Sorry... I figured maybe running the program would be more accurate)

	Ok, but I wonder if thats the problem. I try running on another system 
and it DOES run, DOES give the same #243, but the next step its doing a
linux_modify_ldt as such :

19038: linux_open("/lib/libgcc_s.so.1",0x0,027757762100) = 3 (0x3)^M
19038: read(0x3,0xbfbfe3a0,0x200)                = 512 (0x200)^M
19038: linux_fstat64(0x3,0xbfbfe2d0,0x28153fc4)  = 0 (0x0)^M
19038: linux_mmap(0xbfbfe1a0)                    = 675074048 (0x283cd000)^M
19038: linux_mmap(0xbfbfe1a0)                    = 675110912 (0x283d6000)^M
19038: close(3)                                  = 0 (0x0)^M
19038: linux_mmap(0xbfbfe78c)                    = 675115008 (0x283d7000)^M
19038: linux_mmap(0xbfbfe82c)                    = 675119104 (0x283d8000)^M
19038: #243()                                    ERR#78 'Function not implemente
d'^M
19038: linux_modify_ldt(0x1,0xbfbfe8ac,0x10)     = 0 (0x0)^M
19038: mprotect(0x283c7000,8192,(0x1)PROT_READ)  = 0 (0x0)^M
19038: mprotect(0x2826a000,4096,(0x1)PROT_READ)  = 0 (0x0)^M
19038: mprotect(0x28259000,4096,(0x1)PROT_READ)  = 0 (0x0)^M
19038: mprotect(0x28153000,4096,(0x1)PROT_READ)  = 0 (0x0)^M
19038: munmap(0x28155000,0x2c9b)                 = 0 (0x0)^M

	I'm finding out that this also ISN'T happening on systems where
the Linux install is local, and used local. I'm finding 100% so far that
it only happens where /compat is NFS mounted. Is this something someone
has ever done, and are there any gotchas that I am running into because
of it, or is it just "One of those things you figure out that leads you
down the completely wrong path".

			Thanks, Tuc


More information about the freebsd-emulation mailing list