Opened 3 months ago

#18984 new bug

BFS: KDL in `bfs_unlink`, corrupted linked list

Reported by: jessicah Owned by: axeld
Priority: normal Milestone: Unscheduled
Component: File Systems/BFS Version: R1/beta4
Keywords: Cc:
Blocked By: Blocking:
Platform: All

Description

On hrev57730. Whilst trying to remove several very large directories simultaneously, and running pkgman update, system crashed.

KDL:

PANIC: ASSERT FAILED (../haiku-git/headers/private/kernel/util/DoublyLinkedList.h:399): fFirst == __null ? fLast == __null : fLast != __null; list: 0xffffffff8329fef8

Welcome to Kernel Debugging Land...
Thread 602 "TrackerTaskLoop" running on CPU 0
stack trace for thread 602 "TrackerTaskLoop"
    kernel stack: 0xffffffff93743000 to 0xffffffff93748000
      user stack: 0x00007faddec92000 to 0x00007faddecd2000
frame                       caller             <image>:function + offset
 0 ffffffff93747a70 (+  32) ffffffff8014ba60   <kernel_x86_64> arch_debug_call_with_fault_handler + 0x1a
 1 ffffffff93747a90 (+  80) ffffffff800b3af8   <kernel_x86_64> debug_call_with_fault_handler + 0x78
 2 ffffffff93747ae0 (+  96) ffffffff800b51a4   <kernel_x86_64> kernel_debugger_loop(char const*, char const*, __va_list_tag*, int) + 0xf4
 3 ffffffff93747b40 (+  80) ffffffff800b553e   <kernel_x86_64> kernel_debugger_internal(char const*, char const*, __va_list_tag*, int) + 0x6e
 4 ffffffff93747b90 (+ 240) ffffffff800b58d7   <kernel_x86_64> panic + 0xb7
 5 ffffffff93747c80 (+  32) ffffffff8212f7ce   <bfs> Inode::RemovedFromTransaction[clone .localalias] () + 0xce
 6 ffffffff93747ca0 (+  64) ffffffff82138c41   <bfs> Transaction::NotifyListeners[clone .localalias] (bool) + 0x81
 7 ffffffff93747ce0 (+  48) ffffffff82138e63   <bfs> Journal::Unlock(Transaction*, bool) + 0x53
 8 ffffffff93747d10 (+ 128) ffffffff8213f6c8   <bfs> bfs_unlink(fs_volume*, fs_vnode*, char const*) + 0xe8
 9 ffffffff93747d90 (+ 320) ffffffff801049b0   <kernel_x86_64> common_unlink(int, char*, bool) + 0x60
10 ffffffff93747ed0 (+  80) ffffffff8010b6dc   <kernel_x86_64> _user_unlink + 0x7c
11 ffffffff93747f20 (+  16) ffffffff8014d63f   <kernel_x86_64> x86_64_syscall_entry + 0xfb
user iframe at 0xffffffff93747f30 (end = 0xffffffff93747ff8)
 rax 0x7e                  rbx 0x7faddecd1390        rcx 0x1b52e81a9fc
 rdx 0x0                   rsi 0x1118c6cc2370        rdi 0x39
 rbp 0x7faddecd0d70         r8 0x80                   r9 0x2
 r10 0x1b52e81abbc         r11 0x246                 r12 0x7faddecd0ca0
 r13 0x0                   r14 0x7faddecd0c80        r15 0x7faddecd0ce0
 rip 0x1b52e81a9fc         rsp 0x7faddecd0c48     rflags 0x246
 vector: 0x63, error code: 0x0
12 ffffffff93747f30 (+140386565131840) 000001b52e81a9fc   <libroot.so> _kern_unlink + 0x0c
13 00007faddecd0d70 (+ 304) 00000211f226b3f7   <libtracker.so> _ZN8BPrivate17WellKnowEntryList5MatchEPK8node_ref (nearest) + 0xe7
14 00007faddecd0ea0 (+ 304) 00000211f226b3f7   <libtracker.so> _ZN8BPrivate17WellKnowEntryList5MatchEPK8node_ref (nearest) + 0xe7
15 00007faddecd0fd0 (+ 304) 00000211f226b3f7   <libtracker.so> _ZN8BPrivate17WellKnowEntryList5MatchEPK8node_ref (nearest) + 0xe7
16 00007faddecd1100 (+ 304) 00000211f226b3f7   <libtracker.so> _ZN8BPrivate17WellKnowEntryList5MatchEPK8node_ref (nearest) + 0xe7
17 00007faddecd1230 (+ 304) 00000211f226b3f7   <libtracker.so> _ZN8BPrivate17WellKnowEntryList5MatchEPK8node_ref (nearest) + 0xe7
18 00007faddecd1360 (+ 224) 00000211f226eff3   <libtracker.so> _ZN8BPrivate13FSMoveToTrashEP11BObjectListI9entry_refEP5BListb (nearest) + 0x393
19 00007faddecd1440 (+  48) 00000211f22f320f   <libtracker.so> _Z13TruncTimeBaseIN8BPrivate9BPoseViewEEfP7BStringlPKT_f (nearest) + 0x2c2f
20 00007faddecd1470 (+  16) 00000211f22f2f1a   <libtracker.so> _Z13TruncTimeBaseIN8BPrivate9BPoseViewEEfP7BStringlPKT_f (nearest) + 0x293a
21 00007faddecd1480 (+  32) 000001b52e819dd9   <libroot.so> _thread_do_exit_work (nearest) + 0x89
22 00007faddecd14a0 (+   0) 00007faf557be258   <commpage> commpage_thread_exit + 0x00

Upon reboot, it replayed the journal:

bfs: Replay log, disk was not correctly unmounted...
register_domain(9, unix)
unregister_domain(0xffffffff83151900, 9, unix)
bfs: replay block run 0:330:1 in log at 160!
bfs: replay block run 52:38186:1 in log at 161!
bfs: replay block run 52:38187:1 in log at 162!
bfs: replay block run 52:38189:1 in log at 163!
bfs: replay block run 52:38190:1 in log at 164!
register_domain(5, internet6)
unregister_domain(0xffffffff83151900, 5, internet6)
bfs: replay block run 52:38192:1 in log at 165!
bfs: replay block run 52:38193:1 in log at 166!
bfs: replay block run 52:38195:1 in log at 167!
bfs: replay block run 52:38198:1 in log at 168!
register_domain(1, internet)
unregister_domain(0xffffffff83151900, 1, internet)
bfs: replay block run 53:54448:1 in log at 169!
bfs: replay block run 53:54449:1 in log at 170!
...
bfs: replay block run 0:2513:1 in log at 2194!
bfs: replay block run 52:38148:1 in log at 2195!
bfs: replay block run 52:38149:1 in log at 2196!
bfs: replay block run 62:39194:1 in log at 2197!
bfs: replay block run 77:47656:1 in log at 2198!
bfs: replay block run 77:48612:1 in log at 2199!
bfs: replay block run 77:48642:1 in log at 2200!
bfs: replay block run 95:37664:1 in log at 2201!
bfs: replay block run 444:14171:1 in log at 2202!
bfs: mounted "Development" (root node at 524288, device = /dev/disk/nvme/0/0)

Change History (0)

Note: See TracTickets for help on using tickets.