Uploaded image for project: 'Commons Daemon'
  1. Commons Daemon
  2. DAEMON-325

missing location in location.c location_jvm_configure for Darwin

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Blocker
    • Resolution: Duplicate
    • 1.0.15
    • 1.1.0
    • Jsvc
    • None
    • Mac OS X and JDK 7

    Description

      On OS_DARWIN the native/location.c is missing a location and java.c is missing a check/location for libverify.dylib

      — location.c.old 2014-11-01 18:53:45.000000000 +0100
      +++ location.c 2014-11-01 18:54:15.000000000 +0100
      @@ -144,6 +144,7 @@ char *location_jvm_default[] = {
      char *location_jvm_configured[] = {
      #if defined(OS_DARWIN)
      "$JAVA_HOME/../Libraries/lib$VM_NAME.dylib",
      + "$JAVA_HOME/jre/lib/$VM_NAME/libjvm.dylib",
      #elif defined(OS_CYGWIN)
      "$JAVA_HOME/jre/bin/$VM_NAME/jvm.dll", /* Sun JDK 1.3 */
      #elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(OS_BSD) || defined(OS_FREEBSD) || defined(OS_TRU64)

      — /Users/rplb/java.c.orig 2014-11-02 12:00:16.000000000 +0100
      +++ /Users/rplb/java.c 2014-11-02 12:16:25.000000000 +0100
      @@ -135,8 +135,15 @@
      {
      #ifdef OS_DARWIN
      dso_handle apph = NULL;

      • char appf[1024];
        + char repl[1024];
        struct stat sb;
        + char *jvm_libs[] = { + "$JAVA_HOME/../Libraries/libjvm_compat.dylib", + "$JAVA_HOME/../Libraries/libappshell.dylib", + "$JAVA_HOME/jre/lib/libverify.dylib", + NULL, + }

        ;
        +
        #endif /* ifdef OS_DARWIN */
        jvm_create_t symb = NULL;
        JNINativeMethod nativemethods[2];
        @@ -184,30 +191,33 @@
        JVM 1.4.1 through 1.5.* The library name is libjvm_compat.dylib
        starting with JVM 1.6 on OS X 10.6 the library name is libverify.dylib.
        */

      • if (replace(appf, 1024, "$JAVA_HOME/../Libraries/libappshell.dylib",
      • "$JAVA_HOME", data->path) != 0) { - log_error("Cannot replace values in loader library"); - return false; - }
      • if (stat(appf, &sb)) {
      • if (replace(appf, 1024, "$JAVA_HOME/../Libraries/libjvm_compat.dylib",
      • "$JAVA_HOME", data->path) != 0) {
        + x = 0;
        + char *appf = NULL;
        + while (jvm_libs[x] != NULL) {
        + char *orig = jvm_libs[x];
        + int k = 0;
        +
        + k = replace(repl, 1024, orig, "$JAVA_HOME", data->path);
        + if (k != 0) { log_error("Cannot replace values in loader library"); return false; }
      • }
      • if (stat(appf, &sb)) {
      • if (replace(appf, 1024, "$JAVA_HOME/../Libraries/libverify.dylib",
      • "$JAVA_HOME", data->path) != 0) {
      • log_error("Cannot replace values in loader library");
      • return false;
        +
        + if (stat(repl, &sb)) { + log_debug("Cannot load the shell library %s", repl); + x++; + }

        else

        { + appf = repl; + break; }

        }

      • apph = dso_link(appf);
      • if (apph == NULL) {
      • log_error("Cannot load required shell library %s", appf);
        +
        + if (appf == NULL) { + log_error("Cannot load none of the required shell library"); return false; }

        +
        + apph = dso_link(appf);
        log_debug("Shell library %s loaded", appf);
        #endif /* ifdef OS_DARWIN */
        #if defined(OSD_POSIX)

      Attachments

        1. java.c.diff
          2 kB
          philippe le berre
        2. location.c.diff
          0.5 kB
          philippe le berre

        Issue Links

          Activity

            People

              Unassigned Unassigned
              p-leberre philippe le berre
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: