#797 closed defect (fixed)
Kernel panic ia64 alternate_instruction_tlb_fault
Reported by: | Jiri Svoboda | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 0.11.1 |
Component: | helenos/kernel/ia64 | Version: | mainline |
Keywords: | Cc: | ||
Blocker for: | Depends on: | ||
See also: |
Description
While working on dynamic linking for ia64 I ran into a kernel panic (not having done any kernel changes)
######> Kernel panic on cpu0 due to a failed assertion: <###### alternate_instruction_tlb_fault() at arch/ia64/src/mm/tlb.c:488: !is_kernel_fault(va) CURRENT=0xe000000009ba0000: pe=0 thread=0xe000000009a9c8e0 task=0xe0000000099c0840 cpu=0xe000000004070010 as=0xe00000000406dbe8 magic=0xfacefeed thread="uinit" task="/app/dltest" cpu0: halted
This can be reproduced on branch dlia64 of https://github.com/jxsvoboda/helenos
Steps to reproduce:
- Clone the dlia64 branch of https://github.com/jxsvoboda/helenos
- Build for ia64/ski, enabling "Build shared libraries" in the configuration
- Boot the system using tool/ew.py and run 'dltest' command (and wait for some 10-30 seconds)
Note:
See TracTickets
for help on using tickets.
The assert is wrong - any userspace code that jumps to an address above the userspace/kernel boundary will likely hit it. It should be checking if istate_from_uspace(), but then, the check in this function is also wrong. It needs to check whether istate→cr_ipsr.cpl == PL_USER and not rely on the address. I am working on this. You can safely remove the offending assert for now.
After removing the assert. dltest will crash and running kio will reveal the following: