Opened 13 years ago

Closed 13 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:
Platform: All


See attached file.

Reproducible. Happens with hrev35136.

Attachments (2)

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

Download all attachments as: .zip

Change History (8)

by jonas.kirilla, 13 years ago

Attachment: KDL.txt added

comment:1 by jonas.kirilla, 13 years ago

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 by anevilyak, 13 years ago

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 by anevilyak, 13 years ago

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.

by anevilyak, 13 years ago

Attachment: bfs.patch added

Proposed patch

comment:4 by anevilyak, 13 years ago

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

comment:5 by anevilyak, 13 years ago

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

comment:6 by anevilyak, 13 years ago

Resolution: fixed
Status: in-progressclosed

Fixed in hrev35147.

Note: See TracTickets for help on using tickets.