ARM Linux: bus error on one specific page of virtual virtual memory

I work on an embedded ARM Linux system, and sometimes (but not always) I get a bus error in my application when a page with virtual address 0x2b200000 opens. Depending on whether the compiler / linker put the code or data to this address, I either get a bus error when reading variables, or when the command is extracted from this page. After a bus error, cat / proc / self / compares and confirms that the page is indeed displayed for something valid in my process.

This seems to be just one page. Pages 0x2b201000 and 0x2b1ff000 are always in order (it is obvious that there may be another bad address somewhere completely different, and I just did not get access to it for anything).

I understand that there are a million unknowns, but it was interesting if someone could point me in some direction of the investigation. The system has a custom .kos driver that uses physical memory that is reserved or hidden from the rest of the kernel, but I don’t understand how this affects virtual addresses.

Any nuggets of understanding are greatly appreciated.

+3
source share
2 answers

Thanks for helping everyone. I found a problem - a driver with poor processing, expecting certain user addresses to be aligned at 2 MB. So, for example, if the actual mapped address was actually 0x2b3cc000, it would incorrectly match 0x2b200000 and would trample my application!

+2
source

β†’ . , . , , .

?

, . , ?

0

All Articles