2012-02-17 14 views

Odpowiedz

3

Według man 7 signal:

Signal  Value  Action Comment 

SIGSTKFLT -,16,-  Term Stack fault on coprocessor (unused) 

Ponieważ stos koprocesora x86 nie można przyczepić (jestem całkiem pewien), nie sądzę, może być sygnalizowane w sposób dorozumiany. Tylko wygenerowanie jawne (przez kill() lub raise()) może spowodować to.

I grep 'd źródłem jądra. Nie używa go, ale istnieje około 50 instancji (na architekturę procesora) z

#define SIGSTKFLT 16 
+2

Cóż, koprocesor x87 może uszkodzić: po prostu zdemaskować bit IM w słowie kontrolnym FPU i spróbować wykonać instrukcję 'fld' 9 razy bez' fstp' lub podobnych. Ale na Linuksie taki błąd w stosie generuje SIGFPE zamiast SIGSTKFLT. – Ruslan

+0

@Ruslan: Chodzi mi o to, że nie sądzę, że 8087 może wygenerować SIGSTKFLT. Oczywiście może tworzyć inne rodzaje błędów, takie jak SIGSEGV, itp. – wallyk

+1

Nie, chodzi mi o to, że może naprawdę dosłownie mieć usterkę stosu (jej 8 rejestrów jest zorganizowanych w stos), chociaż nie odzwierciedla to tego, błędy - dla aplikacji są tylko SIGFPE. – Ruslan

Powiązane problemy