2012-02-17 9 views
5

¿En qué circunstancias (si las hay) la señal SIGSTKFLT se generará sincrónicamente por el kernel bajo Linux 3.0 en x86_64?Linux 3.0 x86_64: ¿Cuándo se genera SIGSTKFLT?

+0

Probablemente nunca lo haría. ¿Por qué preguntas? – sep332

+1

Intentando escribir un mensaje de error apropiado para ello en una biblioteca del sistema. –

Respuesta

3

Según man 7 signal:

Signal  Value  Action Comment 

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

Desde la pila 86 coprocesador no puedo criticar (estoy bastante seguro), no creo que se puede señalizar de forma implícita. Solo la generación explícita (por kill() o raise()) podría causarlo.

I grep 'd the kernel source. No lo usa, pero hay aproximadamente 50 instancias (por arquitectura de CPU) de

#define SIGSTKFLT 16 
+2

Bueno, el coprocesador x87 puede fallar: simplemente desenmascarar el bit IM en FPU Control Word e intentar ejecutar la instrucción 'fld' 9 veces sin' fstp' o similares. Pero en Linux tal falla de pila genera SIGFPE en lugar de SIGSTKFLT. – Ruslan

+0

@Ruslan: Quise decir que no creo que el 8087 pueda generar un SIGSTKFLT. Por supuesto, puede crear otros tipos de fallas como un SIGSEGV, etc. – wallyk

+1

No, quiero decir que literalmente puede tener un error de pila (sus 8 registros están organizados en una pila), aunque esto no refleja cómo Linux informa tales errores: para la aplicación solo son SIGFPE. – Ruslan

Cuestiones relacionadas