LINUX.ORG.RU

История изменений

Исправление HE_KOT, (текущая версия) :

Удалось настроить отладку ядра оффтопика и словить вызов целевого метода.

Стек вызовов выглядит следующим образом:

1: kd> KP
 # Child-SP          RetAddr               Call Site
00 fffff684`562fecd0 fffff803`22e0f16c     ACPI!DebugQuit+0x30
01 fffff684`562fed10 fffff803`22e0f2d6     ACPI!DbgExecuteCmd+0xe4
02 fffff684`562fed70 fffff803`22e0de6d     ACPI!Debugger+0x122
03 fffff684`562ff0e0 fffff803`22e1c5cd     ACPI!AMLIDebugger+0x2d
04 fffff684`562ff110 fffff803`22e1cb44     ACPI!ParseOpcode+0x7d
05 fffff684`562ff150 fffff803`22e14860     ACPI!ParseScope+0x114
06 fffff684`562ff180 fffff803`22dc619a     ACPI!RunContext+0x11c
07 fffff684`562ff1d0 fffff803`22e11b8a     ACPI!InsertReadyQueue+0x1a6
08 fffff684`562ff210 fffff803`22e150a4     ACPI!RestartContext+0x92
09 fffff684`562ff250 fffff803`22e1587d     ACPI!AsyncEvalObject+0x3c4
0a fffff684`562ff2b0 fffff803`22e084fd     ACPI!SyncEvalObject+0x1e1
0b fffff684`562ff360 fffff803`22dc4bc0     ACPI!AMLIEvalNameSpaceObject+0x151
0c fffff684`562ff3c0 fffff803`22dc7575     ACPI!ACPIIoctlEvalControlMethod+0x18e
0d fffff684`562ff460 fffff803`22dc10db     ACPI!ACPIIrpDispatchDeviceControl+0x62e5
0e fffff684`562ff4a0 fffff803`1dc29cd5     ACPI!ACPIDispatchIrp+0xcb
0f fffff684`562ff520 fffff803`58b7eda1     nt!IofCallDriver+0x55
10 fffff684`562ff560 ffffc28d`4f7bad50     0xfffff803`58b7eda1
11 fffff684`562ff568 fffff803`58b8a560     0xffffc28d`4f7bad50
12 fffff684`562ff570 ffffc28d`5b190690     0xfffff803`58b8a560
13 fffff684`562ff578 ffffc28d`5b06add0     0xffffc28d`5b190690
14 fffff684`562ff580 00000000`00000001     0xffffc28d`5b06add0
15 fffff684`562ff588 ffffc28d`5b3d0001     0x1
16 fffff684`562ff590 00000000`00000101     0xffffc28d`5b3d0001
17 fffff684`562ff598 00000000`00000000     0x101

Сервер отладочных символов подключил, но всё, что до IofCallDriver, не именуется, а меня интересует именно инициатор вызова.

Скорее всего, всё, что выше строки 0b, касается отладчика. Это вызывает вопросы, правильный ли стек я смотрю.

Может, у кого-то есть соображения, как это расковырять?

Исходная версия HE_KOT, :

Удалось настроить отладку ядра оффтопика и словить вызов целевого метода.

Стек вызовов выглядит следующим образом:

1: kd> KP
 # Child-SP          RetAddr               Call Site
00 fffff684`562fecd0 fffff803`22e0f16c     ACPI!DebugQuit+0x30
01 fffff684`562fed10 fffff803`22e0f2d6     ACPI!DbgExecuteCmd+0xe4
02 fffff684`562fed70 fffff803`22e0de6d     ACPI!Debugger+0x122
03 fffff684`562ff0e0 fffff803`22e1c5cd     ACPI!AMLIDebugger+0x2d
04 fffff684`562ff110 fffff803`22e1cb44     ACPI!ParseOpcode+0x7d
05 fffff684`562ff150 fffff803`22e14860     ACPI!ParseScope+0x114
06 fffff684`562ff180 fffff803`22dc619a     ACPI!RunContext+0x11c
07 fffff684`562ff1d0 fffff803`22e11b8a     ACPI!InsertReadyQueue+0x1a6
08 fffff684`562ff210 fffff803`22e150a4     ACPI!RestartContext+0x92
09 fffff684`562ff250 fffff803`22e1587d     ACPI!AsyncEvalObject+0x3c4
0a fffff684`562ff2b0 fffff803`22e084fd     ACPI!SyncEvalObject+0x1e1
0b fffff684`562ff360 fffff803`22dc4bc0     ACPI!AMLIEvalNameSpaceObject+0x151
0c fffff684`562ff3c0 fffff803`22dc7575     ACPI!ACPIIoctlEvalControlMethod+0x18e
0d fffff684`562ff460 fffff803`22dc10db     ACPI!ACPIIrpDispatchDeviceControl+0x62e5
0e fffff684`562ff4a0 fffff803`1dc29cd5     ACPI!ACPIDispatchIrp+0xcb
0f fffff684`562ff520 fffff803`58b7eda1     nt!IofCallDriver+0x55
10 fffff684`562ff560 ffffc28d`4f7bad50     0xfffff803`58b7eda1
11 fffff684`562ff568 fffff803`58b8a560     0xffffc28d`4f7bad50
12 fffff684`562ff570 ffffc28d`5b190690     0xfffff803`58b8a560
13 fffff684`562ff578 ffffc28d`5b06add0     0xffffc28d`5b190690
14 fffff684`562ff580 00000000`00000001     0xffffc28d`5b06add0
15 fffff684`562ff588 ffffc28d`5b3d0001     0x1
16 fffff684`562ff590 00000000`00000101     0xffffc28d`5b3d0001
17 fffff684`562ff598 00000000`00000000     0x101

Сервер отладочных символов подключил, но всё, что до IofCallDriver, не именуется, а меня интересует именно инициатор вызова.

Может, у кого-то есть соображения, как это расковырять?