Tôi có một ứng dụng Java 1.6 truy cập mô-đun gốc của bên thứ ba, thông qua lớp JNI được cung cấp làm giao diện. Gần đây, chúng tôi nhận thấy rằng SEGFAULT đang xảy ra trong mô-đun gốc và đang khiến ứng dụng của chúng tôi gặp sự cố. Có thể nắm bắt và xử lý sự kiện này, ít nhất là để đăng nhập nó đúng cách trước khi chết?Có thể xử lý SEGFAULT orginating trong mã gốc không?
Tôi đã thử cả hai kỹ thuật Java trong bài viết từ kjp's answer. Không làm việc. Cố gắng cài đặt một signal handler trên kết quả 'SEGV' trong ngoại lệ
tín hiệu đã được sử dụng bởi VM: SEGV
Các shutdown handler Tôi đã cài đặt đơn giản thất bại trong việc sa thải, có lẽ vì những gì các IBM article trạng thái:
móc Shutdown sẽ không thể chạy nếu phương pháp
Runtime.halt() được gọi chấm dứt JVM. Runtime.halt() được cung cấp để cho phép tắt nhanh JVM.
Tùy chọn JVM -Xrs được chỉ định.
JVM thoát bất thường, chẳng hạn như điều kiện ngoại lệ hoặc hủy bỏ cưỡng bức do phần mềm JVM tạo ra.
Biểu tượng gỡ lỗi công khai có sẵn cho mã gốc không? Nếu bạn có thể tìm hiểu thêm về lý do tại sao nó xảy ra, bạn có thể gửi báo cáo lỗi toàn diện đủ để giúp họ sửa thư viện của họ. – Benj
@Benj Làm việc trên điều đó song song. Họ sẽ nhận được nhiều thông tin hơn họ muốn. Đã hy vọng có một kế hoạch dự phòng. –
Bạn đang chạy hệ điều hành nào? – Benj