Opened 15 years ago
Closed 15 years ago
#113 closed defect (fixed)
arm32 is broken
Reported by: | Martin Decky | Owned by: | |
---|---|---|---|
Priority: | critical | Milestone: | 0.4.2 |
Component: | helenos/kernel/arm32 | Version: | mainline |
Keywords: | Cc: | ||
Blocker for: | Depends on: | ||
See also: |
Description
After moving to GCC 4.4.1, the arm32 port seems to be broken when running in GXemul. An assert on line 118 in generic/src/mm/page.c (in page_mapping_insert()) gets hit while mapping kernel memory in page_arch_init().
This seems to be some kind of memory corruption or misbehaving exception handler, since several page_mapping_insert() calls execute succesfully before this happens.
Note:
See TracTickets
for help on using tickets.
I finally built a cross gdb
for arm32 so that now I am able to set a watchpoint on page_mapping_operations.
I now see that frame_alloc() in pt_mapping_insert() is returning a frame, which
is in the kernel data region and coincides with the frame where page_mapping_operations
lives. This memory gets cleared by memsetb() called from pt_mapping_insert()
and thus we hit the assertion:
So the question now is, why is physical address 0x80242000 available
for allocation when it contains kernel data?
And then we should ask why we are not seeing the same problem with
the old toolchain.