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?
Trả lời
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
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
@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
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
Nó có thể sẽ không bao giờ xảy ra. Tại sao bạn hỏi? – sep332
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. –