Khi tôi nhận được tín hiệu gây ra coredump, tôi muốn chạy trình xử lý riêng của mình để sao chép cấu trúc siginfo_t và ucontext_t vào các biến toàn cầu, để chúng có thể được truy cập trong kết xuất lõi. Hiện tại vào cuối xử lý của tôi, tôi gán lại trình xử lý mặc định và gọi lệnh nâng cao (thesig). Vấn đề với việc đó là đổ lõi "thông tin đăng ký" cho thấy trạng thái của sổ đăng ký trong trình xử lý của tôi, và không phải tại thời điểm tín hiệu ban đầu. Tôi nhận ra rằng kể từ khi tôi đã lưu ucontext_t, tôi có thể nhìn vào đó cho các giá trị đăng ký ban đầu, nhưng kiến thức đó có khả năng bị mất/quên khi các bãi lõi được truyền xung quanh nhóm.Linux: Snoop một tín hiệu mà không có trashing đăng ký cho các bãi chứa lõi tiếp theo?
Vì vậy, câu hỏi của tôi là: là có một cách để reraise một tín hiệu, và đảm bảo các tập tin dump cốt lõi giữ trạng thái đăng ký của tín hiệu ban đầu? Tôi nghĩ có lẽ tôi có thể sử dụng một số asm nội tuyến để khôi phục lại tất cả các reg ở cuối của trình xử lý, sau đó quay lại lệnh đã gây ra tín hiệu thay vì gọi lệnh raise(), nhưng tôi không chắc liệu chúng ta có thể đảm bảo rằng -attempting hướng dẫn sẽ gây ra cùng một hành vi báo hiệu như là nỗ lực đầu tiên.
@ER, Điểm kết thúc chính xác đến vị trí sai. :( – sree