Duplicate :
|
|
Relates :
|
|
Relates :
|
FULL PRODUCT VERSION : java version "1.6.0_14" Java(TM) SE Runtime Environment (build 1.6.0_14-b08) Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode) FULL OS VERSION : SuSE Linux -10.3-x86_64 A DESCRIPTION OF THE PROBLEM : I've had several programs crash the JVM. They all crashed at exactly the same spot at different times, so I believe this is JVM bug and not some OS issue. We just upgraded to 1.6.0u14 and started seeing this issue and haven't ever experienced the issue prior to this release. THE PROBLEM WAS REPRODUCIBLE WITH -Xint FLAG: Did not try THE PROBLEM WAS REPRODUCIBLE WITH -server FLAG: Yes STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : The application randomly crashes the JVM at the same function when running our exremely large and proprietary application for a long period of time. ERROR MESSAGES/STACK TRACES THAT OCCUR : Attached seperatly ---------- BEGIN SOURCE ---------- Here is the code fragment of the function that causes the crash: /** Periodically monitors java api client leases, closing sockets and killing active api requests belonging to clients having expired leases. */ @SubL(source = "cycl/java-api-kernel.lisp", position = 4370) public static final SubLObject java_api_lease_monitor() { { final SubLThread thread = SubLProcess.currentSubLThread(); { SubLObject current_utc_time_with_milliseconds = NIL; SubLObject uuid_strings_to_remove = NIL; while (true) { { SubLObject ignore_errors_tag = NIL; try { { SubLObject _prev_bind_0 = Errors.$error_handler$.currentBinding(thread); try { Errors.$error_handler$.bind(Symbols.symbol_function($sym8$IGNORE_ERRORS_HANDLER), thread); try { if ((NIL != $java_api_leases$.getGlobalValue())) { uuid_strings_to_remove = NIL; current_utc_time_with_milliseconds = numeric_date_utilities.get_utc_time_with_milliseconds(); { SubLObject lock = dictionary_utilities.synchronized_dictionary_lock($java_api_leases$.getGlobalValue()); SubLObject release = NIL; try { release = Locks.seize_lock(lock); { SubLObject iteration_state = dictionary_contents.do_dictionary_contents_state(dictionary.dictionary_contents(dictionary_utilities.synchronized_dictionary_dictionary($java_api_leases$.getGlobalValue()))); while ((NIL == dictionary_contents.do_dictionary_contents_doneP(iteration_state))) { thread.resetMultipleValues(); { SubLObject uuid_string = dictionary_contents.do_dictionary_contents_key_value(iteration_state); SubLObject lease_expiration_time = thread.secondMultipleValue(); thread.resetMultipleValues(); { SubLObject error_message = NIL; SubLObject seconds_yet_to_wait = NIL; try { { SubLObject _prev_bind_0_1 = Errors.$error_handler$.currentBinding(thread); try { Errors.$error_handler$.bind($sym9$CATCH_ERROR_MESSAGE_HANDLER, thread); try { seconds_yet_to_wait = Numbers.divide(Numbers.subtract(lease_expiration_time, current_utc_time_with_milliseconds), $int10$1000); if (seconds_yet_to_wait.numL(ZERO_INTEGER)) { uuid_strings_to_remove = cons(uuid_string, uuid_strings_to_remove); release_resources_for_java_api_client(uuid_string, T); } } catch (Throwable catch_var) { Errors.handleThrowable(catch_var, NIL); } } finally { Errors.$error_handler$.rebind(_prev_bind_0_1, thread); } } } catch (Throwable ccatch_env_var) { error_message = Errors.handleThrowable(ccatch_env_var, subl_macro_promotions.$catch_error_message_target$.getGlobalValue()); } if ((NIL != error_message)) { Errors.warn(error_message); } } iteration_state = dictionary_contents.do_dictionary_contents_next(iteration_state); } } dictionary_contents.do_dictionary_contents_finalize(iteration_state); } } finally { if ((NIL != release)) { Locks.release_lock(lock); } } } { SubLObject cdolist_list_var = uuid_strings_to_remove; SubLObject uuid_string_to_remove = NIL; for (uuid_string_to_remove = cdolist_list_var.first(); (NIL != cdolist_list_var); cdolist_list_var = cdolist_list_var.rest(), uuid_string_to_remove = cdolist_list_var.first()) { { SubLObject error_message = NIL; try { { SubLObject _prev_bind_0_2 = Errors.$error_handler$.currentBinding(thread); try { Errors.$error_handler$.bind($sym9$CATCH_ERROR_MESSAGE_HANDLER, thread); try { dictionary_utilities.synchronized_dictionary_remove($java_api_leases$.getGlobalValue(), uuid_string_to_remove); } catch (Throwable catch_var) { Errors.handleThrowable(catch_var, NIL); } } finally { Errors.$error_handler$.rebind(_prev_bind_0_2, thread); } } } catch (Throwable ccatch_env_var) { error_message = Errors.handleThrowable(ccatch_env_var, subl_macro_promotions.$catch_error_message_target$.getGlobalValue()); } if ((NIL != error_message)) { Errors.warn(error_message); } } } } Threads.sleep($java_api_lease_monitor_sleep_seconds$.getGlobalValue()); } } catch (Throwable catch_var) { Errors.handleThrowable(catch_var, NIL); } } finally { Errors.$error_handler$.rebind(_prev_bind_0, thread); } } } catch (Throwable ccatch_env_var) { ignore_errors_tag = Errors.handleThrowable(ccatch_env_var, $kw7$IGNORE_ERRORS_TARGET); } } } } } } ---------- END SOURCE ---------- Release Regression From : 6u13 The above release value was the last known release where this bug was not reproducible. Since then there has been a regression. Release Regression From : 6u13 The above release value was the last known release where this bug was not reproducible. Since then there has been a regression.
|