Portál AbcLinuxu, 12. května 2024 11:08


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
3.6.2013 09:07 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše SIGBUS?
Odpovědět | Sbalit | Link | Blokovat | Admin
Chápu, že lidi od virtualizace často znají jen x86_64, kde se se SIGBUS nepotkají, ale na jiných architekturách je to signál docela běžný (nezarovnaný přístup do paměti). Jak si představují, že proces rozliší důvod signálu?
3.6.2013 12:41 luky
Rozbalit Rozbalit vše Re: SIGBUS?
Jak si představují, že proces rozliší důvod signálu?
Prectenim polozky si_trapno v siginfo?
3.6.2013 17:44 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: SIGBUS?
Něco takového bych čekal, ale čekal bych, že zrovna tohle se bude v LWN řešit, protože jednotlivé položky siginfo_t jsou poněkud podspecifikované. Zrovna třeba si_trapno je vyhrazeno pro číslo hardwarové výjimky. Toto číslo je specifické pro platformu a přetěžovat jej pro softwarový výpadek bych si nedovolil.
3.6.2013 18:00 luky
Rozbalit Rozbalit vše Re: SIGBUS?
Ta konstanta ale muze mit klidne na kazde platforme jinou hodnotu, stejne jako spousta jinych konstant.
4.6.2013 10:46 JS
Rozbalit Rozbalit vše Re: SIGBUS?
Ja bych rekl, ze to byla Petrova pointa.. Ze se prave neda multiplatformne urcit, jakou by mela mit hodnotu ta konstanta pro vypadek stranky, kdyz kazdy HW pouziva jine konstanty.

Jinak mozna naivni otazka, ale jak komplikovane by bylo proste pridat dalsi signal?
4.6.2013 13:08 luky
Rozbalit Rozbalit vše Re: SIGBUS?
Vite treba o tom, ze mezi platformami se lisi i cisla signalu? A navic trapno je 4 bytovy integer, takze by se pro kernel mohly pouzivat zaporna cisla, ktera pravdepodobne zadny HW nepouziva.
5.6.2013 10:50 JS
Rozbalit Rozbalit vše Re: SIGBUS?
Ano, to me napadlo. Ale otazka je, co je to platforma. x86 se casto oznacuje za platformu, presto se HW ktery pripojujete muze dost lisit (a zapojeni CPU v systemu).

Ale neni duvod se rozcilovat. Nejsem expert pres x86.
4.6.2013 20:37 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: SIGBUS?

Byla nebyla. Bojím se, že se tam cpe hodnota přímo z nějakého registru. Bez validace. A nerad bych se dožil, aby výměnou procesoru, jehož výrobce dostane přesně stejný nápad s nikde nepoužitými zápornými číslu, mi začali padat procesy.

Prostě mi přijde zvrhlé ukládat nesouvisející hodnotu do něčeho, co má jiný význam. To už lepší mi přijde si_code. Nicméně sémanticky by dával smysl SIGSEGV.

5.6.2013 15:34 Sten
Rozbalit Rozbalit vše Re: SIGBUS?
Proč SIGSEGV? Když mmapuji paměť z flash disku a vytáhnu jej (takže mmap nemá odkud načíst stránky při přístupu), aplikace dostane SIGBUS. Tohle je podobná situace.
5.6.2013 21:16 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: SIGBUS?
Protože výpadek stránky se tradičně oznamuje přes SIGSEGV. SIGBUS spíše znamená problém při dolování dat z paměťového zařízení. O použití SIGBUS po mmap() jsem neměl tušení. Je pravda, že obě dává smysl.
5.6.2013 22:09 luky
Rozbalit Rozbalit vše Re: SIGBUS?
Semanticky dava smysl SIGBUS. SIGSEGV znamena, ze bylo pristoupeno na pamet, ktera nema mapovani. SIGBUS oznacuje spatny pristup k mapovane pameti. Jelikoz tento signal se bude posilat pro pamet, ke ktere bylo vytvoreno mapovani pomoci madvise, je semanticky spravne poslat signal SIGBUS!
3.6.2013 16:37 Sten
Rozbalit Rozbalit vše Re: SIGBUS?
SIGBUS může snadno nastat i na x86{,_64}, třeba když namapujete soubor z flash disku a před čtením jej vytáhnete. Přesný důvod signálu může signal handler přečíst ze siginfo, musí ale používat formát void handler(int, siginfo_t *, void *);.
9.6.2013 10:19 JZD | skóre: 14 | blog: Na_dvorku
Rozbalit Rozbalit vše Re: Jaderné noviny – 16. 5. 2013: Ošetřování výpadků stránek v uživatelském prostoru
Odpovědět | Sbalit | Link | Blokovat | Admin
Chybí odkaz na lwn.net od Willa Deacona.
Víra znamená vyznávat to, o čem člověk dobře ví, že to není pravda. Mlčeti platina, mluviti v gajzu, býti v hajzlu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.