changeset 204:c18e0a19bee5

Bug 3269: Could not attach HeapStats Agent to JDK 6 Reviewed-by: ykubota https://github.com/HeapStats/heapstats/pull/68
author Yasumasa Suenaga <yasuenag@gmail.com>
date Thu, 05 Jan 2017 22:15:12 +0900
parents 3539967ad3c5
children 7db9ee3ae347
files ChangeLog agent/src/heapstats-engines/vmFunctions.cpp agent/src/heapstats-engines/vmFunctions.hpp
diffstat 3 files changed, 15 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Jan 05 22:08:15 2017 +0900
+++ b/ChangeLog	Thu Jan 05 22:15:12 2017 +0900
@@ -1,6 +1,7 @@
 2017-01-05  Yasumasa Suenaga <yasuenag@gmail.com>
 
 	* Bug 3265: Many WARN and CRIT messages are shown when DumpRequest is sent
+	* Bug 3269: Could not attach HeapStats Agent to JDK 6
 
 2016-12-16  Yasumasa Suenaga <yasuenag@gmail.com>
 
--- a/agent/src/heapstats-engines/vmFunctions.cpp	Thu Jan 05 22:08:15 2017 +0900
+++ b/agent/src/heapstats-engines/vmFunctions.cpp	Thu Jan 05 22:15:12 2017 +0900
@@ -171,8 +171,12 @@
   /* Search "UserHandler" function symbol. */
   userHandler = (TUserHandler) this->symFinder->findSymbol(USERHANDLER_SYMBOL);
   if (unlikely(userHandler == NULL)) {
-    logger->printWarnMsg("UserHandler() not found.");
-    return false;
+    userHandler = (TUserHandler) this->symFinder->findSymbol(
+                                                       USERHANDLER_SYMBOL_JDK6);
+    if (unlikely(userHandler == NULL)) {
+      logger->printWarnMsg("UserHandler() not found.");
+      return false;
+    }
   }
 
   /* Search "SR_handler" function symbol. */
@@ -181,8 +185,12 @@
     sr_handler = (TSR_Handler) this->symFinder->findSymbol(
                                                     SR_HANDLER_SYMBOL_FALLBACK);
     if (sr_handler == NULL) {
-      logger->printWarnMsg("SR_handler() not found.");
-      return false;
+      sr_handler = (TSR_Handler) this->symFinder->findSymbol(
+                                                        SR_HANDLER_SYMBOL_JDK6);
+      if (sr_handler == NULL) {
+        logger->printWarnMsg("SR_handler() not found.");
+        return false;
+      }
     }
   }
 
--- a/agent/src/heapstats-engines/vmFunctions.hpp	Thu Jan 05 22:08:15 2017 +0900
+++ b/agent/src/heapstats-engines/vmFunctions.hpp	Thu Jan 05 22:15:12 2017 +0900
@@ -111,12 +111,14 @@
  * \brief Symbol of UserHandler()
  */
 #define USERHANDLER_SYMBOL "_ZL11UserHandleriPvS_"
+#define USERHANDLER_SYMBOL_JDK6 "_Z11UserHandleriPvS_"
 
 /*!
  * \brief Symbol of SR_handler()
  */
 #define SR_HANDLER_SYMBOL          "_ZL10SR_handleriP7siginfoP8ucontext"
 #define SR_HANDLER_SYMBOL_FALLBACK "_ZL10SR_handleriP9siginfo_tP8ucontext"
+#define SR_HANDLER_SYMBOL_JDK6     "_Z10SR_handleriP7siginfoP8ucontext"
 
 /*!
  * \brief Symbol of ObjectSynchronizer::get_lock_owner().