Ptrace problem on amd64? (Was: Re: Warcraft III can't find cdrom)

Jesse Allen the3dfxdude at gmail.com
Wed Mar 2 10:59:29 CST 2005


On Wed, 02 Mar 2005 12:52:38 +0000, Mike Hearn <mike at navi.cx> wrote:
> > I guess you meant the problems refered to in WWN250
> > (http://www.winehq.com/?issue=250). I checked and the patch there is
> > only for i386. I ported those to the x86_64 files (see attachments) and
> > tried again to no avail.

Anyway, the problem I had was that the cpu trap flag was being set
during kernel operations when it wasn't supposed to.  The way I
finally discovered the exact spot was to make trap setting and
clearing verbose in logs under a working kernel and the broken kernel
and compare the logs.  You need to make sure that 2.6.8 works and
2.6.9-rc1 or 2 breaks it, for this to be the same case.  I know the
initial two patches did touch amd64, and the later fixes have not been
migrated to amd64.

> >
> > I also tried the test app as posted by Linus Torvalds here:
> > http://www.winehq.com/hypermail/wine-devel/2004/11/0551.html
> > When trying that on amd64 with the ptrace patches it does not even want
> > to compile (not completely surprising). In the chroot it segfaults.
> > A strace showed the following:
> >
> > x5556c000
> > access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
> > directory)
> > open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or
> > directory)
> > open("/etc/ld.so.cache", O_RDONLY)      = 3
> > fstat64(3, {st_mode=S_IFREG|0644, st_size=32850, ...}) = 0
> > old_mmap(NULL, 32850, PROT_READ, MAP_PRIVATE, 3, 0) = 0x5556d000
> > close(3)                                = 0
> > access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
> > directory)
> > open("/lib/tls/libc.so.6", O_RDONLY)    = 3
> > read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360Y\1"...,
> > 512) = 512
> > fstat64(3, {st_mode=S_IFREG|0644, st_size=1253924, ...}) = 0
> > old_mmap(NULL, 1260140, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
> > 0x55576000
> > old_mmap(0x5569f000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
> > 3, 0x129000) = 0x5569f000
> > old_mmap(0x556a7000, 10860, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
> > MAP_ANONYMOUS, -1, 0) = 0x556a7000
> > close(3)                                = 0
> > old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
> > -1, 0) = 0x556aa000
> > set_thread_area({entry_number:-1 -> 11, base_addr:0x556aa2a0,
> > limit:1048575, seg_32bit:1, contents:0, read_exec_only:0,
> > limit_in_pages:1, seg_not_present:0, useable:1}) = 0
> > munmap(0x5556d000, 32850)               = 0
> > rt_sigaction(SIGTRAP, {0x8048438, [TRAP], SA_RESTART}, {SIG_DFL}, 8) = 0
> > mprotect(0x8048000, 4096, PROT_READ|PROT_WRITE) = 0
> > --- SIGSEGV (Segmentation fault) @ 0 (0) ---
> > +++ killed by SIGSEGV +++
> >
> >

This is from the test program?

Jesse



More information about the wine-devel mailing list