EDIT: SIGSEGV có thể tái sản xuất này xảy ra trên máy Linux có nhiều hơn một proc và hơn 2GB mem, vì vậy Java được đặt mặc định ở chế độ máy chủ. Điều thú vị là nếu tôi buộc "-client" không có sự cố nữa ... (Tôi vẫn không chắc chắn phải làm gì với SIGSEGV tái sản xuất của tôi nhưng nó thú vị dù sao).Máy ảo Java: SIGSEGV có thể tái tạo trên cả 1.6.0_17 và 1.6.0_18, cách báo cáo?
lưu ý đầu tiên rằng đây là một chút liên quan nhưng không giống với những điều sau đây vì trong trường hợp của chúng tôi nó chỉ là một SIGSEGV điều đó xảy ra, và chúng tôi chắc chắn có thể kích hoạt nó:
JVM OutOfMemory error "death spiral" (not memory leak)
Nó liên quan bởi vì nó xảy ra khi chúng ta cho ăn ứng dụng của chúng tôi với một "dữ liệu dữ liệu": dữ liệu đến từ các tệp văn bản và sau đó được rút gọn số (có, số tài chính bị bẻ khóa trong Java).
Tôi có thể kích hoạt một JVM thành SIGSEGV bằng cách sử dụng mã Java hợp lệ.
LƯU Ý: Tôi luôn có thể sụp đổ cả JVM 1.6.0_17 adn JVM 1.6.0_18 và câu hỏi này không phải là về làm thế nào để workaround vấn đề này (ví dụ chơi với VM thông số thể khắc phục vấn đề nhưng tôi không phải sau đó, tôi muốn biết phải làm gì với SIGSEGV luôn tái tạo này).
Tôi đã giải quyết vấn đề bằng cách sử dụng Java 1.5 khi khởi chạy ứng dụng của chúng tôi (trong khi vẫn sử dụng Java 1.6 để chạy IntelliJ IDEA, v.v. trên cùng một máy, cùng một lúc), nhưng câu hỏi của tôi là báo cáo hay không, và nếu nó cần, làm thế nào để báo cáo nó biết rằng bản thân nhật ký chứa thông tin độc quyền (toàn bộ hs_err _..._ log).
phần cứng lỗi có thể được loại trừ khả năng cho:
này đang xảy ra trên một máy trạm thường xuyên đạt đến tháng thời gian hoạt động (tôi chỉ khởi động lại nó khi bản vá lỗi bảo mật quan trọng ảnh hưởng đến tôi tỉa xuống và cứng Debian Linux được ban hành , mà thực sự không xảy ra thường xuyên) và trên các ứng dụng không bao giờ sụp đổ (làm cho nó rất không chắc rằng đó là một vấn đề phần cứng trên máy đó [hơn bên dưới])
cùng một ứng dụng hoạt động hoàn hảo trên cùng một máy trong JVM 1.5 dưới cùng một tải (đây là cách tôi đang thử nghiệm các ứng dụng: Tôi chỉ đơn giản là khởi động nó dưới một máy ảo 1.5)
cùng một ứng dụng hoạt động hoàn toàn tốt trên nhiều máy khách hàng trăm dưới cùng tải (khổng lồ) (không bao giờ bị rơi một lần trên Windows + JVM 1.5 hoặc 1.6 và không bao giờ bị rơi một lần trên OS X + JVM 1.5 hoặc 1.6 [sự cố có nghĩa là cuộc gọi điện thoại tức thì từ khách hàng])
ứng dụng khác trên cùng một máy đó và cùng 1.6.0_17 hoặc 1.6.0_18 JVM không bao giờ gặp sự cố (ví dụ: tôi có hai phiên bản IntelliJ IDEA chạy với hai người dùng khác nhau trên cùng một máy đó và họ không gặp lỗi)
máy được kiểm tra với memtest "thường xuyên" (trước khi cài đặt mới hệ điều hành, mà cuối cùng đã xảy ra khi tôi cài đặt Debian Lenny, cách đây không lâu)
đây là tái sản xuất theo yêu cầu SIGSEGV:
... $uname -a
Linux saturn 2.6.26-2-686 #1 SMP Wed Nov 4 20:45:37 UTC 2009 i686 GNU/Linux
... $ export /home/wizard/jdk1.6.0_17/bin:$PATH
... $ java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode)
Khởi chạy ứng dụng, thức ăn nó một "hàng tấn dữ liệu ", đợi vài giây ...
Sau đó, không thay đổi, cho 1.6.0_17:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0xb76d0080, pid=30793, tid=2514328464
#
# JRE version: 6.0_17-b04
# Java VM: Java HotSpot(TM) Server VM (14.3-b01 mixed mode linux-x86)
# Problematic frame:
# V [libjvm.so+0x4bc080]
#
# An error report file with more information is saved as:
# /home/wizard/hs_err_pid30793.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
(lưu ý dòng '[libjvm.so + 0x4bc080]' là phù hợp cho 1.6.0_17 ở mọi SIGSEGV)
hoặc 1,6 .0_18:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0xb77468f0, pid=722, tid=2514516880
#
# JRE version: 6.0_18-b07
# Java VM: Java HotSpot(TM) Server VM (16.0-b13 mixed mode linux-x86)
# Problematic frame:
# V [libjvm.so+0x4d88f0]
#
# An error report file with more information is saved as:
# /home/wizard/hs_err_pid722.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
Aborted
(lưu ý dòng "[libjvm.so + 0x4d88f0]" là phù hợp cho 1.6.0_18 ở mọi SIGSEGV)
các prob lem là tệp nhật ký chứa thông tin độc quyền không thể chia sẻ được.
Sao chép "trường hợp thử nghiệm nhỏ" tái tạo sự cố không thực tế: vấn đề tương tự như vấn đề được liên kết ở trên, điều này chỉ xảy ra khi một "dữ liệu" được cấp cho ứng dụng. Lưu ý rằng chính xác cùng một ứng dụng, trên chính xác cùng một phần cứng, với chính xác cùng một JVM nhưng một phiên bản khác của Linux (tôi đã có Debian Etch trước đó) KHÔNG kích hoạt SIGSEGV đó một lần.
Nhưng điều này không có nghĩa là JVM không có lỗi: nó vẫn có thể là sự cố JVM.
Tôi có nên báo cáo điều này và cách thực hiện không? (lưu ý rằng viết một "testible tiny case case" là ảo tưởng và nhật ký chứa thông tin độc quyền không nên bị rò rỉ). Tôi có nên chỉnh sửa nhật ký và gửi nó không?
Quy trình báo cáo SIGSEGV có thể sao chép như thế nào khi nhật ký của bạn chứa thông tin độc quyền và khi một trường hợp thử nghiệm tái tạo vấn đề không thực sự có thể thực hiện được?
Có ai trong số các bạn đã mở thành công một lỗi như vậy và sau đó xem nó được giải quyết trong bản phát hành Java tiếp theo không?
Bạn có nghĩ rằng "cộng đồng Java" tốt để báo cáo vấn đề như vậy hoặc tôi không nên bận tâm vì điều đó không quan trọng?
Điều này vẫn áp dụng với phiên bản Java mới nhất? Cũng nên xem xét sử dụng IBM Java hoặc JRocket. –
@ Thorbjørn Ravn Andersen: Tôi sẽ kiểm tra sau tối nay và báo cáo tại đây – SyntaxT3rr0r
@ Thorbjørn Ravn Andersen: Chỉ cần tải xuống phiên bản JRE: 6.0_25-b06. Chính xác sự cố tương tự: -/ – SyntaxT3rr0r