Messages in this thread |  | | Date | Wed, 19 Sep 2001 20:57:25 +0400 | From | "Andrew V. Samoilov" <> | Subject | Re: mmap successed but SIGBUS generated on access |
| |
Hi, Jamie!
Thanks for an answer!
>> I have bad CD-R with a some number of unreadable files. >> >> Then user-space program use mmap system it returns ok but any >> attempt to access a memory pointed by this system call finishes >> with SIGBUS. So Midnight Commander internal file viewer faults. > >You can get the same problem even without read errors with some >configurations of NFS. (root mmaps a file owned by someone else, but >cannot read the file due to `root_squash' on server). > >It's not an error, it's standard behaviour.
Well.
>> Is there any way to detect such problem in user-space without signal >> handlers ? > >I don't think there is any way without a signal handler. > >It is possible to do something useful with a signal handler sometimes. >For example, you can mmap() a zero page into the offending page once >you've got the fault address, or read() a zero page if you did >MAP_PRIVATE (this produces fewer VMAs), set a flag, and let the program >continue until it checks the flag and aborts the parsing or whatever >operation it's doing.
So, I must read all of the mapped area and even this does not saves me of faulting next time if somebody change file permission. Does I understand this situation right?
>Unfortunately I don't think the signal handler's si_errno is set >properly to indicate the error. So another thing to try is read() of >the offending page, to get a useful error code. (And if the read >succeeds, that's ok because you did it at the correct address so the >program can proceed anyway). > >Fwiw, unfortunately not all versions of the kernel, or all >architectures, set si_addr properly for SIGBUS.
It's pity. But thanks again.
-- Regards, Andrew.
____________________________________________
Играй в шахматы в Интернет на InstantChess.com!
Play chess on InstantChess.com !
www.instantchess.com
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |