Opened 10 years ago

Closed 10 years ago

#5487 closed bug (fixed)

[ACPI] PowerStatus fails to KDL during start with "Unexpected exception 'Divide Error Exception'"

Reported by: siarzhuk Owned by: nobody
Priority: normal Milestone: R1
Component: Drivers/ACPI Version: R1/alpha1
Keywords: Cc:
Blocked By: Blocking:
Has a Patch: no Platform: All

Description

a) This behavior was observed on hrev35624
b) Both "apm true" and "acpi true" settings were uncommented in the kernel settings.
c) This system is a desktop PC and it have no battery at all.

Steps to reproduce:
a) Run the PowerStatus application;
b) Press the button "Install" in the alert box.
c) System goes to KDL. Stack trace is below.

Notes:
The same behavior was observed on another PC system too. Are they are required too?
Complete syslog is also attached.

Any suggestions and testing cases are welcome!

est: open
EST: Get frequency table from model specific register
est: Guessed bus clock (high) of 199 MHz
PANIC: Unexpected exception "Divide Error Exception" occurred in kernel mode! Error code: 0x0

Welcome to Kernel Debugging Land...
Thread 197 "w>Deskbar" running on CPU 1
kdebug> bt
stack trace for thread 197 "w>Deskbar"
    kernel stack: 0x843cd000 to 0x843d1000
      user stack: 0x700c3000 to 0x70103000
frame               caller     <image>:function + offset
 0 843d0694 (+  48) 8006efbc   <kernel_x86> invoke_command_trampoline(0x843d072c) + 0x001c
 1 843d06c4 (+  12) 800f6c50   <kernel_x86>:arch_debug_call_with_fault_handler + 0x001b
 2 843d06d0 (+  48) 8006e1a5   <kernel_x86>:debug_call_with_fault_handler + 0x0065
 3 843d0700 (+  64) 8006f21a   <kernel_x86>:invoke_debugger_command + 0x00b6
 4 843d0740 (+  64) 8006f044   <kernel_x86> invoke_pipe_segment(debugger_command_pipe*: 0x8438a030, int32: 0, 0x0 "<NULL>") + 0x007c
 5 843d0780 (+  64) 8006f370   <kernel_x86>:invoke_debugger_command_pipe + 0x008c
 6 843d07c0 (+  48) 80070d34   <kernel_x86> ExpressionParser<0x843d0870>::_ParseCommandPipe(0x843d086c) + 0x023c
 7 843d07f0 (+  64) 80070165   <kernel_x86> ExpressionParser<0x843d0870>::EvaluateCommand(0x80149ce0 "bt", 0x843d086c) + 0x02ad
 8 843d0830 (+ 224) 80072138   <kernel_x86>:evaluate_debug_command + 0x0080
 9 843d0910 (+  80) 8006cd2c   <kernel_x86> kernel_debugger_loop(0x8012ab17 "PANIC: ", 0x80141080 "Unexpected exception "%s" occurred in kernel mode! Error code: 0x%lx
", 0x843d09cc "??", int32: 1) + 0x029c
10 843d0960 (+  48) 8006cf98   <kernel_x86> kernel_debugger_internal(0x8012ab17 "PANIC: ", 0x80141080 "Unexpected exception "%s" occurred in kernel mode! Error code: 0x%lx
", 0x843d09cc "??", int32: 1) + 0x0048
11 843d0990 (+  48) 8006e338   <kernel_x86>:panic + 0x0024
12 843d09c0 (+  96) 800f19f6   <kernel_x86> unexpected_exception(iframe*: 0x843d0a2c) + 0x0146
13 843d0a20 (+  12) 800f6ffd   <kernel_x86>:int_bottom + 0x003d
kernel iframe at 0x843d0a2c (end = 0x843d0a7c)
 eax 0xbb0          ebx 0x812d1584      ecx 0x0          edx 0x0
 esi 0xffffffff     edi 0x0             ebp 0x843d0ca4   esp 0x843d0a60
 eip 0x812cfd01  eflags 0x10246    
 vector: 0x0, error code: 0x0
14 843d0a2c (+ 632) 812cfd01   </boot/system/add-ons/kernel/drivers/power/enhanced_speedstep> est_msr_info(uint64: 0xf2300000f23, freq_info*: 0x803ac4ec) + 0x00d9
15 843d0ca4 (+  80) 812cfb03   </boot/system/add-ons/kernel/drivers/power/enhanced_speedstep> est_get_info(freq_info*: 0x803ac4ec) + 0x005f
16 843d0cf4 (+  48) 812cf527   </boot/system/add-ons/kernel/drivers/power/enhanced_speedstep> est_open(0x8024a730, 0x843d0d94 "power/enhanced_speedstep/0", int32: 2, 0x8039ef38) + 0x0137
17 843d0d24 (+  48) 8007cdcb   <kernel_x86> AbstractModuleDevice<0x80227e9c>::Open(0x843d0d94 "power/enhanced_speedstep/0", int32: 2, 0x8039ef38) + 0x0023
18 843d0d54 (+ 320) 80081e09   <kernel_x86> devfs_open(fs_volume*: 0x80222050, fs_vnode*: 0x803b28c4, int32: 2, 0x843d0ec0) + 0x00a1
19 843d0e94 (+  48) 800b262d   <kernel_x86> open_vnode(vnode*: 0x803b28c4, int32: 2, false) + 0x0029
20 843d0ec4 (+  64) 800b2f0b   <kernel_x86> file_open(int32: -1, 0x80932080 "/dev", int32: 2, false) + 0x008f
21 843d0f04 (+  64) 800b85d9   <kernel_x86>:_user_open + 0x009d
22 843d0f44 (+ 100) 800f7232   <kernel_x86>:handle_syscall + 0x00af
user iframe at 0x843d0fa8 (end = 0x843d1000)
 eax 0x60           ebx 0x78e060        ecx 0x70102780   edx 0xffff0114
 esi 0x70102838     edi 0x701027ec      ebp 0x701027ac   esp 0x843d0fdc
 eip 0xffff0114  eflags 0x246      user esp 0x70102780
 vector: 0x63, error code: 0x0
23 843d0fa8 (+   0) ffff0114   <commpage>:commpage_syscall + 0x0004
24 701027ac (+ 224) 0092027d   </boot/system/apps/PowerStatus@0x00916000>:unknown + 0xa27d
25 7010288c (+ 240) 00920227   </boot/system/apps/PowerStatus@0x00916000>:unknown + 0xa227
26 7010297c (+  64) 0091fea5   </boot/system/apps/PowerStatus@0x00916000>:unknown + 0x9ea5
27 701029bc (+  48) 0092597f   </boot/system/apps/PowerStatus@0x00916000>:unknown + 0xf97f
28 701029ec (+  80) 00924b33   </boot/system/apps/PowerStatus@0x00916000>:unknown + 0xeb33
29 70102a3c (+  64) 0092629e   </boot/system/apps/PowerStatus@0x00916000>:unknown + 0x1029e
30 70102a7c (+ 160) 002367da   </boot/system/Deskbar@0x00200000>:unknown + 0x367da
31 70102b1c (+ 288) 0022ac95   </boot/system/Deskbar@0x00200000>:unknown + 0x2ac95
32 70102c3c (+  80) 00229faa   </boot/system/Deskbar@0x00200000>:unknown + 0x29faa
33 70102c8c (+  48) 003238f9   </boot/system/lib/libbe.so@0x00260000>:unknown + 0xc38f9
34 70102cbc (+ 560) 003e2c04   </boot/system/lib/libbe.so@0x00260000>:unknown + 0x182c04
35 70102eec (+  48) 00229a10   </boot/system/Deskbar@0x00200000>:unknown + 0x29a10
36 70102f1c (+  96) 003e6cff   </boot/system/lib/libbe.so@0x00260000>:unknown + 0x186cff
37 70102f7c (+  48) 00324def   </boot/system/lib/libbe.so@0x00260000>:unknown + 0xc4def
38 70102fac (+  48) 006ecbf6   </boot/system/lib/libroot.so@0x006c2000>:unknown + 0x2abf6
39 70102fdc (+   0) 70102fec   4415:w>Deskbar_197_stack@0x700c3000 + 0x3ffec
kdebug> reboot

Attachments (1)

syslog (67.6 KB ) - added by siarzhuk 10 years ago.

Download all attachments as: .zip

Change History (7)

by siarzhuk, 10 years ago

Attachment: syslog added

comment:1 by bonefish, 10 years ago

Probably a division by 0. "dis" could verify that.

comment:2 by mmlr, 10 years ago

I'd hazard a guess and say it's that division. Both that and the one above don't check for getting 0 after the shift.

in reply to:  2 comment:3 by siarzhuk, 10 years ago

Replying to mmlr:

I'd hazard a guess and say it's that division. Both that and the one above don't check for getting 0 after the shift.

I'll trace out this place today evening and let you know what is going on there.

in reply to:  2 comment:4 by siarzhuk, 10 years ago

Replying to mmlr:

I'd hazard a guess and say it's that division. Both that and the one above don't check for getting 0 after the shift.

For debug purposes I have traced msr, id and 8-shifted id and returned B_ERROR in zero-case:

KERN: est: open
KERN: EST: Get frequency table from model specific register
KERN: msr:20 id:0 id8:0
KERN: est: CPU supports Enhanced Speedstep, but is not recognized.
KERN: est: open
KERN: EST: Get frequency table from model specific register
KERN: msr:20 id:0 id8:0
KERN: est: CPU supports Enhanced Speedstep, but is not recognized.

The check for zero divider is required here in any case.

Probably I can perform more tests to check why it "is not recognized"? Any suggestions?

comment:5 by siarzhuk, 10 years ago

I have tested this on the another PC. Yes, both msr >> 32; and msr >> 48; cases must be checked here for zero-case.

comment:6 by siarzhuk, 10 years ago

Resolution: fixed
Status: newclosed

Fixed in hrev35756. Thank you!

Note: See TracTickets for help on using tickets.