[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#626021: linux-image-2.6.38-2-686: icebp (opcode 0xf1) no longer causing a SIGTRAP, breaks Wine



On Tue, May 10, 2011 at 17:55, Frederic Weisbecker <fweisbec@gmail.com> wrote:
> On Sat, May 07, 2011 at 10:21:37PM -0500, Austin English wrote:
>> On Sat, May 7, 2011 at 21:11, Ben Hutchings <ben@decadent.org.uk> wrote:
>> > On Sat, 2011-05-07 at 19:50 -0500, Austin English wrote:
>> >> Package: linux-2.6
>> >> Version: 2.6.38-3
>> >> Severity: normal
>> >>
>> >> This is a bug in the kernel itself, there have been a few patches to
>> >> the kernel, but it seems at least one patch is not in the vanilla
>> >> kernel. Some other distributions are including this patch. See
>> >> https://bugzilla.kernel.org/show_bug.cgi?id=16315 and
>> >> http://bugs.winehq.org/show_bug.cgi?id=23323 for more info.
>> >
>> > A different version of that patch has been applied as:
>> >
>> > commit 89e45aac42d40426c97e6901811309bf49c4993f
>> > Author: Frederic Weisbecker <fweisbec@gmail.com>
>> > Date:   Fri Sep 17 03:24:13 2010 +0200
>> >
>> >    x86: Fix instruction breakpoint encoding
>> >
>> > Please identify any further changes you believe are required.
>>
>> Looking at the Wine bug, appears the relevant commits are:
>> 1. Commit 08d6832 breaks the login
>> 2. Commit a1e80fa fixes commit 08d6832 (this is in 2.6.35)
>> 3. Commit f7809da also breaks the login (this is in 2.6.36-rc1 and later)
>> 4. Frederick's new patch fixes commit f7809da (this hasn't been checked in)
>>
>> from http://bugs.winehq.org/show_bug.cgi?id=23323#c181
>>
>> in any case, a regression test was added to wine to check for this,
>> which fails on this kernel:
>> ../../../tools/runtest -q -P wine -M ntdll.dll -T ../../.. -p
>> ntdll_test.exe.so exception.c && touch exception.ok
>> exception.c:399: Test failed: 42: Wrong exception address 0x330000/0x330001
>> wine: Unhandled exception 0x80000004 at address 0x330000 (thread
>> 0009), starting debugger...
>> 0x00330000: icebp
>> ...
>> Backtrace:
>> =>0 0x00330000 (0x0032fcb8)
>>   1 0x684c2d44 func_exception+0x283()
>> [/home/austin/wine-git/dlls/ntdll/tests/exception.c:465] in ntdll_test
>> (0x0032fd38)
>>   2 0x684f17fe run_test+0x14d(name="exception.c")
>> [/home/austin/wine-git/dlls/ntdll/tests/../../../include/wine/test.h:556]
>> in ntdll_test (0x0032fd88)
>>   3 0x684f22c7 main+0x156(argc=*** Invalid address 0x00000000 ***
>> , argv=*** Invalid address 0x00000004 ***
>> Internal symbol error: unable to access memory location 0x4)
>> [/home/austin/wine-git/dlls/ntdll/tests/../../../include/wine/test.h:624]
>> in ntdll_test (0x0032fe48)
>>   4 0x684f249c __wine_spec_exe_entry+0x7b(peb=0x7ffdf000)
>> [/home/austin/wine-git/dlls/winecrt0/exe_entry.c:36] in ntdll_test
>> (0x0032fe90)
>>   5 0x7b8593ac call_process_entry+0xb() in kernel32 (0x0032fea8)
>>   6 0x7b859fdf start_process+0x5e(peb=0x7ffdf000)
>> [/home/austin/wine-git/dlls/kernel32/process.c:1086] in kernel32
>> (0x0032fee8)
>>   7 0x7bc70e58 call_thread_func+0xb() in ntdll (0x0032fef8)
>>   8 0x7bc744fe call_thread_entry_point+0x6d(entry=0x7b859f80,
>> arg=0x7ffdf000) [/home/austin/wine-git/dlls/ntdll/signal_i386.c:2499]
>> in ntdll (0x0032ffc8)
>>   9 0x7bc49f1e start_process+0x1d(kernel_start=0x7b859f80)
>> [/home/austin/wine-git/dlls/ntdll/loader.c:2612] in ntdll (0x0032ffe8)
>>   10 0x6802899d wine_call_on_stack+0x1c() in libwine.so.1 (0x00000000)
>> exception.c:399: Test failed: 42: Wrong exception address 0x330000/0x330001
>> exception.c:399: Test failed: 42: Wrong exception address 0x330000/0x330001
>
> I'm trying to launch this wine test from dlls/ntdll/tests/
> with ../../../tools/runtest -q -P wine -M ntdll.dll -T ../../.. -p
> and a git clone of the wine repo from today.
>
> And I get this result: "shift: 89: can't shift that many", which I have
> no clue what it's about.
>
> So I don't know how to reproduce. Any idea on how I should launch
> that wine self test, or which mistake I may have made?

do:
$ ./configure && make

as usual, then:
$ cd dlls/ntdll/tests
$ make exception.ok

to repeat the test after success, 'rm exception.ok' or 'make testclean'.

Cheers,
Austin



Reply to: