activemq-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "clebert suconic (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (ARTEMIS-732) Spurious message while loading native libraries in certain envs.
Date Fri, 16 Sep 2016 13:39:22 GMT

     [ https://issues.apache.org/jira/browse/ARTEMIS-732?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

clebert suconic updated ARTEMIS-732:
------------------------------------
    Description: 
Some systems will throw the following message when loading the wrong bit alignment:

{noformat}
OpenJDK 64-Bit Server VM warning: You have loaded library
/home/username/apache-artemis-1.4.0/bin/lib/linux-i686/libartemis-native-32.so
which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link
it with '-z noexecstack'
{noformat}

The problem is with the {{exec}} command-line, specifically the {{-Djava.library.path}} parameter.
It combines both the 32-bit library path and the 64-bit library path, but it doesn't actually
work.  The script should deal with it accordingly to only have the proper  32-bit or 64-bit.
All that is necessary is to modify the library path to be platform specific, and the error
condition is resolved. I have attached modified script files (*{{artemis}}* and *{{artemis64}}*)
that can be used depending on the run-time environment. Here are the key differences between
the two scripts:

{code:title=32-bit version}
exec "$JAVACMD" $JAVA_ARGS $ARTEMIS_CLUSTER_PROPS \
    -classpath "$CLASSPATH" \
    -Dartemis.home="$ARTEMIS_HOME" \
    -Djava.library.path="$ARTEMIS_HOME/bin/lib/linux-i686" \
    $DEBUG_ARGS \
    org.apache.activemq.artemis.boot.Artemis "$@"}}
{code}

{code:title=64-bit version}
exec "$JAVACMD" $JAVA_ARGS $ARTEMIS_CLUSTER_PROPS \
    -classpath "$CLASSPATH" \
    -Dartemis.home="$ARTEMIS_HOME" \
    -Djava.library.path="$ARTEMIS_HOME/bin/lib/linux-x86_64" \
    $DEBUG_ARGS \
    org.apache.activemq.artemis.boot.Artemis "$@"
{code}


  was:
The artemis launching script located in the bin folder needs to be split into two separate
scripts: one for 32-bit, and one for 64-bit. The current script attempts (but fails) to be
run-time adaptive. However, when running on a 64-bit environment, the following error is always
displayed when it is run:

{noformat}
OpenJDK 64-Bit Server VM warning: You have loaded library
/home/username/apache-artemis-1.4.0/bin/lib/linux-i686/libartemis-native-32.so
which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link
it with '-z noexecstack'
{noformat}

The problem is with the {{exec}} command-line, specifically the {{-Djava.library.path}} parameter.
It combines both the 32-bit library path and the 64-bit library path, but it doesn't actually
work.  The script should be split into two separate scripts, one for 32-bit and one for 64-bit.
All that is necessary is to modify the library path to be platform specific, and the error
condition is resolved. I have attached modified script files (*{{artemis}}* and *{{artemis64}}*)
that can be used depending on the run-time environment. Here are the key differences between
the two scripts:

{code:title=32-bit version}
exec "$JAVACMD" $JAVA_ARGS $ARTEMIS_CLUSTER_PROPS \
    -classpath "$CLASSPATH" \
    -Dartemis.home="$ARTEMIS_HOME" \
    -Djava.library.path="$ARTEMIS_HOME/bin/lib/linux-i686" \
    $DEBUG_ARGS \
    org.apache.activemq.artemis.boot.Artemis "$@"}}
{code}

{code:title=64-bit version}
exec "$JAVACMD" $JAVA_ARGS $ARTEMIS_CLUSTER_PROPS \
    -classpath "$CLASSPATH" \
    -Dartemis.home="$ARTEMIS_HOME" \
    -Djava.library.path="$ARTEMIS_HOME/bin/lib/linux-x86_64" \
    $DEBUG_ARGS \
    org.apache.activemq.artemis.boot.Artemis "$@"
{code}



> Spurious message while loading native libraries in certain envs.
> ----------------------------------------------------------------
>
>                 Key: ARTEMIS-732
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-732
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 1.4.0
>         Environment: Debian Linux 64-bit (Stretch), OpenJDK 1.8.0.102
>            Reporter: Jim Gomes
>              Labels: easyfix
>             Fix For: 1.5.0
>
>         Attachments: artemis, artemis64
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> Some systems will throw the following message when loading the wrong bit alignment:
> {noformat}
> OpenJDK 64-Bit Server VM warning: You have loaded library
> /home/username/apache-artemis-1.4.0/bin/lib/linux-i686/libartemis-native-32.so
> which might have disabled stack guard. The VM will try to fix the stack guard now.
> It's highly recommended that you fix the library with 'execstack -c <libfile>',
or link it with '-z noexecstack'
> {noformat}
> The problem is with the {{exec}} command-line, specifically the {{-Djava.library.path}}
parameter. It combines both the 32-bit library path and the 64-bit library path, but it doesn't
actually work.  The script should deal with it accordingly to only have the proper  32-bit
or 64-bit. All that is necessary is to modify the library path to be platform specific, and
the error condition is resolved. I have attached modified script files (*{{artemis}}* and
*{{artemis64}}*) that can be used depending on the run-time environment. Here are the key
differences between the two scripts:
> {code:title=32-bit version}
> exec "$JAVACMD" $JAVA_ARGS $ARTEMIS_CLUSTER_PROPS \
>     -classpath "$CLASSPATH" \
>     -Dartemis.home="$ARTEMIS_HOME" \
>     -Djava.library.path="$ARTEMIS_HOME/bin/lib/linux-i686" \
>     $DEBUG_ARGS \
>     org.apache.activemq.artemis.boot.Artemis "$@"}}
> {code}
> {code:title=64-bit version}
> exec "$JAVACMD" $JAVA_ARGS $ARTEMIS_CLUSTER_PROPS \
>     -classpath "$CLASSPATH" \
>     -Dartemis.home="$ARTEMIS_HOME" \
>     -Djava.library.path="$ARTEMIS_HOME/bin/lib/linux-x86_64" \
>     $DEBUG_ARGS \
>     org.apache.activemq.artemis.boot.Artemis "$@"
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message