Bug #2898
openHAMMER panic
0%
Description
panic: assertion "(RB_EMPTY(&ip->rec_tree) && (ip->flags & HAMMER_INODE_XDIRTY) == 0) || (!RB_EMPTY(&ip->rec_tree) && (ip->flags & HAMMER_INODE_XDIRTY) != 0)" failed in hammer_flush_inode_done at /usr/src/sys/vfs/hammer/hammer_inode.c:2577
cpuid = 0
Trace beginning at frame 0xffffffe78639e910
panic() at panic+0x261 0xffffffff802e31ee
panic() at panic+0x261 0xffffffff802e31ee
hammer_flush_inode_done() at hammer_flush_inode_done+0x111 0xffffffff80424e68
hammer_flusher_flush_inode() at hammer_flusher_flush_inode+0x7a 0xffffffff8041f24a
hammer_fls_rb_tree_RB_SCAN() at hammer_fls_rb_tree_RB_SCAN+0xfc 0xffffffff8041e39e
hammer_flusher_slave_thread() at hammer_flusher_slave_thread+0x7a 0xffffffff8041e4d2
DragonFly ylem.theshell.com 4.5-DEVELOPMENT DragonFly v4.5.0.681.g2e03c8-DEVELOPMENT #2: Sat Mar 19 15:37:05 PDT 2016 root@ylem.theshell.com:/usr/obj/usr/src/sys/YLEM64 x86_64
It didn’t crash dump—any ideas?
Peter
Updated by tkusumi over 8 years ago
i'm suspecting a possible race here, but need to look into more details.
no one has really touched related code since 4.4.
hammer_rel_mem_record()
412 if (record->flags & HAMMER_RECF_ONRBTREE) {
413 RB_REMOVE(hammer_rec_rb_tree,
414 &ip->rec_tree,
415 record);
416 record->flags &= ~HAMMER_RECF_ONRBTREE;
417 KKASSERT;
418 if (RB_EMPTY(&ip->rec_tree)) {
419 ip->flags &= ~HAMMER_INODE_XDIRTY;
420 ip->sync_flags &= ~HAMMER_INODE_XDIRTY;
421 }