#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)
Change History (4)
comment:1 Changed 22 months ago by
comment:2 Changed 22 months ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
Fixed in commit 180e132;
comment:3 Changed 22 months ago by
Milestone: | → 0.9.2 |
---|
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: