Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#1534 closed bug (fixed)

Assert in DoublyLinkedList.h

Reported by: kaliber Owned by: bonefish
Priority: critical Milestone: R1
Component: System/Kernel Version: R1/pre-alpha1
Keywords: Cc:
Blocked By: Blocking:
Platform: All


During shutdown:

list: 0x90810810, element: 0x908bc4e0
PANIC: ASSERT FAILED (headers/private/kernel/util/DoublyLinkedList.h:464): fFirst != 0 && fLast != 0 && (fFirst != fLast || element ==
Welcome to Kernel Debugging Land...
Running on CPU 0
kdebug> bt
stack trace for thread 0x49 "Terminal"
    kernel stack: 0x90660000 to 0x90664000
      user stack: 0x7efe7000 to 0x7ffe7000
frame            caller     <image>:function + offset
90663ca0 (+  52) 8008e5c4   <kernel>:invoke_command + 0x0074
90663cd4 (+  48) 8008e6e2   <kernel>:kernel_debugger_loop + 0x00de
90663d04 (+  32) 8008f16e   <kernel>:kernel_debugger + 0x00b2
90663d24 (+ 192) 8008f0b1   <kernel>:panic + 0x0029
90663de4 (+  64) 8003ae40   <kernel>:team_set_job_control_state + 0x012c
90663e24 (+ 128) 8003d7f4   <kernel>:thread_exit + 0x0168
90663ea4 (+  64) 80034acc   <kernel>:handle_signals + 0x0328
90663ee4 (+  48) 8003dcbd   <kernel>:thread_at_kernel_exit + 0x0015
90663f14 (+ 144) 80097e16   <kernel>:i386_handle_trap + 0x0402
iframe at 0x90663fac (end = 0x90664000)
 eax 0x0            ebx 0x830750        ecx 0x7ffe6e50   edx 0x0
 esi 0x7ffef538     edi 0x7ffe7100      ebp 0x7ffe6f6c   esp 0x90663fdc
 eip 0xffff0102  eflags 0x207
 vector: 0x63, error code: 0x0
90663fa4 (+   0) ffff0102
7ffe6f6c -- read fault

BTW. Seems that assert line is truncated. Maybe it's another bug?

Change History (4)

comment:1 by axeld, 13 years ago

Component: - GeneralSystem/Kernel
Owner: changed from axeld to bonefish
Priority: normalcritical

comment:2 by bonefish, 13 years ago

Status: newassigned

comment:3 by bonefish, 13 years ago

Resolution: fixed
Status: assignedclosed

Fixed in hrev22450.

comment:4 by bonefish, 13 years ago

Regarding the truncated assert line: This is a limitation of panic(). It uses a 128 byte on-stack buffer to format the output. We could probably use a larger static buffer (per CPU?), but usually 128 are enough. For asserts source file and line number do suffice, since the truncated part is static text anyway.

Note: See TracTickets for help on using tickets.