yigal_s' Journal
 
[Most Recent Entries] [Calendar View] [Friends View]

Friday, July 20th, 2012

    Time Event
    4:36p
    программистское -- сами мы не местные. Требуется помощь юникс-гуру
    Уважаемые юникс-гуру! Слушайте, а как в этих ваших Линуксах обрабатывать нарушения обращения к памяти в мультитредной аппликации?

    Ну, допустим, я переопределю обработчк сигнала SIGSEGV. Замечу, не для данного треда, а для всего процесса -- иного не дано.

    Далее по идее, я где-то должен вызывать в тредах, которые могут навернуться, sigsetjmp. Чтоб туда откатиться, если мой тред подорвется на обращении к памяти. Проблема, однако, в том, что буфер, в который эта информация прописана должен быть ассоциирован с конкретным тредом. Ну ок, сделаю как нибудь. В thread local storage, да?

    Теперь, значица, ко мне влетает сигнал, я ловлю его обработчиком, бегу в свой tls.... оп, а разве я могу обращаться к tls из-под обработчика сигнала? Да я даже свой собственный-то tls не напишу, поскольку даже ожидать на семафоре или мютексе не могу под сигналом. Ну и? Только не говорите мне, что в этом случае нужно писать lock-free имплементацию TLS, хорошо?

    Спасите, не дайте разочароваться в Линуксах!

    << Previous Day 2012/07/20
    [Calendar]
    Next Day >>

About LJ.Rossia.org