linuxolator problem on i386

Roman Divacky rdivacky at freebsd.org
Mon Sep 17 09:34:26 PDT 2007


On Mon, Sep 17, 2007 at 08:16:56PM +0400, Boris Samorodov wrote:
> On Mon, 17 Sep 2007 20:12:00 +0400 Boris Samorodov wrote:
> 
> > > what about this? www.vlakno.cz/~rdivacky/linux_bsam.patch (it incorporates
> > > the previous patch, you might want to revert the _hlds.patch if this complete
> > > patch does not work)
> 
> > Way, that seems to help!
> 
> Hm, I was too quick to respond. Sorry.
> 
> Actually it does not core only because getdents() does not work:
> -----
>  16857 hlds_i686 NAMI  "/compat/linux/usr/home/bsam/hlds_l/./cstrike/sound/weapons/reload1.wav"
>  16857 hlds_i686 NAMI  "/usr/home/bsam/hlds_l/./cstrike/sound/weapons/reload1.wav"
>  16857 hlds_i686 RET   linux_stat64 JUSTRETURN
>  16857 hlds_i686 CALL  linux_open(0xbfbece08,0x18800,0xbfbecd34)
>  16857 hlds_i686 NAMI  "/compat/linux/usr/home/bsam/hlds_l/./cstrike/sound/weapons"
>  16857 hlds_i686 NAMI  "/usr/home/bsam/hlds_l/./cstrike/sound/weapons"
>  16857 hlds_i686 RET   linux_open 6
>  16857 hlds_i686 CALL  linux_fstat64(0x6,0xbfbecd34,0x281f0ff4)
>  16857 hlds_i686 RET   linux_fstat64 0
>  16857 hlds_i686 CALL  linux_fcntl64(0x6,0x2,0x1)
>  16857 hlds_i686 RET   linux_fcntl64 0
>  16857 hlds_i686 CALL  linux_getdents(0x6,0x8da532c,0x1000)
>  16857 hlds_i686 RET   linux_getdents -1 errno 14 Bad address
>  16857 hlds_i686 CALL  close(0x6)
>  16857 hlds_i686 RET   close 0
>  16857 hlds_i686 CALL  linux_stat64(0xbfbecec4,0xbfbecdc4,0x281f0ff4)
>  16857 hlds_i686 NAMI  "/compat/linux/usr/home/bsam/hlds_l/./valve/sound/weapons/reload1.wav"
>  16857 hlds_i686 NAMI  "/usr/home/bsam/hlds_l/./valve/sound/weapons/reload1.wav"
>  16857 hlds_i686 RET   linux_stat64 JUSTRETURN
>  16857 hlds_i686 CALL  linux_open(0xbfbece08,0x18800,0xbfbecd34)
>  16857 hlds_i686 NAMI  "/compat/linux/usr/home/bsam/hlds_l/./valve/sound/weapons"
>  16857 hlds_i686 NAMI  "/usr/home/bsam/hlds_l/./valve/sound/weapons"
>  16857 hlds_i686 RET   linux_open 6
>  16857 hlds_i686 CALL  linux_fstat64(0x6,0xbfbecd34,0x281f0ff4)
>  16857 hlds_i686 RET   linux_fstat64 0
>  16857 hlds_i686 CALL  linux_fcntl64(0x6,0x2,0x1)
>  16857 hlds_i686 RET   linux_fcntl64 0
>  16857 hlds_i686 CALL  linux_getdents(0x6,0x8da532c,0x1000)
>  16857 hlds_i686 RET   linux_getdents -1 errno 14 Bad address

show me the args->dirent... easily done by adding
printf("XXX: %p\n", args->dirent);

to the getdents_common() code (in the if (args->dirent) block)



More information about the freebsd-emulation mailing list