2012-02-17 25 views
5

Trong trường hợp nào (nếu có) tín hiệu SIGSTKFLT có được đồng bộ nâng lên bởi hạt nhân trong Linux 3.0 trên x86_64 không?Linux 3.0 x86_64: Khi nào SIGSTKFLT được nâng lên?

+0

Nó có thể sẽ không bao giờ xảy ra. Tại sao bạn hỏi? – sep332

+1

Cố gắng viết một thông báo lỗi thích hợp cho nó trong thư viện hệ thống. –

Trả lời

3

Theo man 7 signal:

Signal  Value  Action Comment 

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

Kể từ khi x86 coprocessor chồng không thể lỗi (Tôi khá chắc chắn), tôi không nghĩ rằng nó có thể được hiệu ngầm. Chỉ thế hệ rõ ràng (theo số kill() hoặc raise()) mới có thể gây ra.

Tôi là nguồn hạt nhân. Nó không sử dụng nó, nhưng có khoảng 50 trường hợp (mỗi kiến ​​trúc CPU) của

#define SIGSTKFLT 16 
+2

Cũng bộ xử lý x87 có thể bị lỗi: chỉ cần unmask IM bit trong FPU Control Word và cố gắng thực hiện lệnh 'fld' 9 lần mà không có' fstp' hoặc tương tự. Nhưng trên Linux như một lỗi ngăn xếp tạo ra SIGFPE thay vì SIGSTKFLT. – Ruslan

+0

@Ruslan: Tôi có nghĩa là tôi không nghĩ rằng 8087 có thể tạo ra một SIGSTKFLT. Tất nhiên nó có thể tạo ra các loại lỗi khác như SIGSEGV, v.v. – wallyk

+1

Không, ý tôi là nó có thể có lỗi ngăn xếp (8 thanh ghi của nó được sắp xếp trong một ngăn xếp), mặc dù điều này không phản ánh cách Linux báo cáo như vậy lỗi - đối với ứng dụng, chúng chỉ là SIGFPE. – Ruslan

Các vấn đề liên quan