Thanks for an answer!
>> I have bad CD-R with a some number of unreadable
>> Then user-space program use mmap system it returns ok
>> attempt to access a memory pointed by this system
>> with SIGBUS. So Midnight Commander internal file
>You can get the same problem even without read errors
>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.
>> Is there any way to detect such problem in user-space
>> handlers ?
>I don't think there is any way without a signal
>It is possible to do something useful with a signal
>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
>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
>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
>architectures, set si_addr properly for SIGBUS.
It's pity. But thanks again.
-- Regards, Andrew.
Играй в шахматы в Интернет на InstantChess.com!
Play chess on InstantChess.com !
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to email@example.com More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/