linuxulator64 status

Chagin Dmitry chagin.dmitry at gmail.com
Thu Jul 24 09:08:02 UTC 2008


On Thu, 24 Jul 2008, Roman Divacky wrote:

> On Thu, Jul 24, 2008 at 10:30:41AM +0400, Chagin Dmitry wrote:
>>
>> hi!
>> I'm not subscribed on fbsd-current@, therefore I shall answer here...
>>
>> It is possible to tell that it works, now I investigate LTP results and
>> search that does not work.
>>
>> ps. signals, dynamic loading of libs works.
>> 100% know that there are problems with getdents syscall, at least at
>> x86_64.
>
> I recall you telling me about glibc using getdents as readdir or something
> like that.. have you progressed on this front?
>

Yesterday I tried to compile glibc-2.7 in x86_64 emulation, look that 
happens:

*** glibc detected *** gmake: double free or corruption (!prev): 
0x0000000000693
d20 ***
======= Backtrace: =========
/lib64/libc.so.6[0x8008b4832]
/lib64/libc.so.6(cfree+0x8c)[0x8008b7f2c]
gmake[0x41d463]
gmake[0x4045d9]
gmake[0x404e3f]
gmake[0x4082b7]

Below a piece of ktrace dump:

  29143 make     CALL  linux_open(0x7fffffffc9d0,O_NONBLOCK|O_DIRECTORY|O_CLOEXEC
,<unused>0x62fd70)
  29143 make     NAMI  "string"
  29143 make     RET   linux_open 5
  29143 make     CALL  linux_newfstat(0x5,0x7fffffffc7d0)
  29143 make     STRU  struct stat {dev=98, ino=3203960, mode=drwxrwxr-x , nlink=
3, uid=500, gid=500, rdev=12856072, atime=1216839073, stime=1192706475, ctime=12
16833980, birthtime=1192706475, size=3072, blksize=4096, blocks=8, flags=0x0 }
  29143 make     RET   linux_newfstat 0
  29143 make     CALL  linux_fcntl(0x5,F_SETFD,FD_CLOEXEC)
  29143 make     RET   linux_fcntl 0
  29143 make     CALL  linux_getdents(0x5,0x692e78,0x1000)
!29143 make     RET   linux_getdents 4096/0x1000
  29143 make     CALL  linux_open(0x80096312c,O_RDWR|O_NOCTTY|O_NONBLOCK,<unused>0x12)
  29143 make     NAMI  "/compat/linux/dev/tty"
  29143 make     NAMI  "/dev/tty"
  29143 make     RET   linux_open 6
  29143 make     CALL  writev(0x6,0x7fffffffbf60,0x7)
  29143 make     GIO   fd 6 wrote 109 bytes
        "*** glibc detected *** /compat/linux/usr/bin/make: double free or corr\
 	uption (!prev): 0x0000000000693e80 ***

getdents must be called at least twice, the last getdents call 
must return 0.
You can try this on i386 :)


> I am more than willing to join you in trying to see whats going on if this
> is the main obstacle on getting linuxulator64 commited...
>
> I hope we can prepare a set of patches to commit to -current so it gets
> integrated. I propose to make another branch devoted to integrating your
> work to -current
>




-- 
Have fun!
chd


More information about the freebsd-emulation mailing list