bug with debug registers and 3.0rt6

From: Maarten Lankhorst
Date: Sun Jul 31 2011 - 11:41:41 EST


Portal 2's anti debugger checks hangs on rt6:

[21940.633370] BUG: sleeping function called from invalid context at kernel/rtmutex.c:645
[21940.633371] in_atomic(): 1, irqs_disabled(): 0, pid: 4235, name: portal2.exe
[21940.633372] Pid: 4235, comm: portal2.exe Tainted: P WC 3.0.0-rt6-patser+ #3
[21940.633377] Call Trace:
[21940.633381] [<ffffffff8103fc0a>] __might_sleep+0xca/0xf0
[21940.633383] [<ffffffff8160d344>] rt_spin_lock+0x24/0x40
[21940.633385] [<ffffffff8106b879>] force_sig_info+0x49/0x100
[21940.633387] [<ffffffff8100e6d8>] send_sigtrap+0x68/0x70
[21940.633389] [<ffffffff8160e6f0>] do_debug+0x150/0x160
[21940.633390] [<ffffffff8160dbf2>] debug+0x22/0x40

and int3:
[15945.341955] BUG: sleeping function called from invalid context at kernel/rtmutex.c:645
[15945.341957] in_atomic(): 1, irqs_disabled(): 0, pid: 3166, name: portal2.exe
[15945.341958] Pid: 3166, comm: portal2.exe Tainted: P WC 3.0.0-rt6-patser+ #3
[15945.341959] Call Trace:
[15945.341963] [<ffffffff8103fc0a>] __might_sleep+0xca/0xf0
[15945.341965] [<ffffffff8160d344>] rt_spin_lock+0x24/0x40
[15945.341968] [<ffffffff8106b879>] force_sig_info+0x49/0x100
[15945.341969] [<ffffffff8106b946>] force_sig+0x16/0x20
[15945.341970] [<ffffffff8160e0ab>] do_trap+0x16b/0x170
[15945.341972] [<ffffffff8160e509>] do_int3+0x99/0xc0
[15945.341973] [<ffffffff8160dc32>] int3+0x22/0x40

Is there a better solution than converting the siglock to a raw spinlock?

~Maarten
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/