Opened 10 years ago

Closed 10 years ago

#5282 closed bug (fixed)

PANIC: vm_page_fault: unhandled page fault in kernel space at 0x24, ip 0x80039a50

Reported by: jonas.kirilla Owned by: anevilyak
Priority: critical Milestone: R1
Component: File Systems/BFS Version: R1/Development
Keywords: Cc:
Blocked By: Blocking:
Has a Patch: no Platform: All


See attached file.

Reproducible. Happens with hrev35136.

Attachments (2)

KDL.txt (8.6 KB) - added by jonas.kirilla 10 years ago.
bfs.patch (555 bytes) - added by anevilyak 10 years ago.
Proposed patch

Download all attachments as: .zip

Change History (8)

Changed 10 years ago by jonas.kirilla

Attachment: KDL.txt added

comment:1 Changed 10 years ago by jonas.kirilla

FWIW, the filename is "[haiku-commits] hrev35066 - in haiku_trunk: headers_private_kernel_arch headers_private_kernel_arch_ppc headers_private_kernel_arch_x86 headers_private_kernel_vm src_system_kernel_arch_generic ... 20100114042613 ingo_weinhold"

comment:2 Changed 10 years ago by anevilyak

Component: System/KernelFile Systems/BFS

The problem appears to be as follows: Inode::ReadAt() calls file_cache_read() with a NULL file cache pointer (which it is not prepared to cope with as it triggers the invalid fault while reading ref->disabled_count), because Inode only creates a cache for files and attributes, which a symlink doesn't match. However, what I don't understand is how this doesn't panic on every symlink.

comment:3 Changed 10 years ago by anevilyak

Upon closer inspection, I see why this particular one triggers it: It's long enough for INODE_LONG_SYMLINK to be set in its flags, which triggers the inode read. Otherwise the read isn't needed.

Changed 10 years ago by anevilyak

Attachment: bfs.patch added

Proposed patch

comment:4 Changed 10 years ago by anevilyak

Attached a (confirmed working) patch, please review when you get a chance Axel :)

comment:5 Changed 10 years ago by anevilyak

Owner: changed from axeld to anevilyak
Status: newin-progress

comment:6 Changed 10 years ago by anevilyak

Resolution: fixed
Status: in-progressclosed

Fixed in hrev35147.

Note: See TracTickets for help on using tickets.