RFR [XS]: 8230901: missing ReleaseStringUTFChars in servicability native code

serguei.spitsyn at oracle.com serguei.spitsyn at oracle.com
Fri Sep 13 22:18:20 UTC 2019


Hi Matthias,


On 9/12/19 4:52 AM, Baesken, Matthias wrote:
>
> Hi Thomas,   thanks for the review .
>
> You are correct about atoi .
>
> New webrev  :
>
> http://cr.openjdk.java.net/~mbaesken/webrevs/8230901.1/ 
> <http://cr.openjdk.java.net/%7Embaesken/webrevs/8230901.1/>
>
> I had 2 additional  observations  :
>
>  1. With  OJDK on solaris 32bit gone for quite some time, we might be
>     able  to kick out the whole  non _LP64  code  because we are
>     always 64 bit
>
> (maybe  someone could comment if this is a safe assumption,  there 
> might be old 32bit solaris core files flying around for some reason 
> even these days … )
>
> http://cr.openjdk.java.net/~mbaesken/webrevs/8230901.1/src/jdk.hotspot.agent/solaris/native/libsaproc/saproc.cpp.frames.html 
> <http://cr.openjdk.java.net/%7Embaesken/webrevs/8230901.1/src/jdk.hotspot.agent/solaris/native/libsaproc/saproc.cpp.frames.html>
>
> 696   // some older versions of libproc.so crash when trying to attach 
> 32 bit
>
> 697   // debugger to 64 bit core file. check and throw error.
>
> 698 #ifndef _LP64
>
> …..
>
>  2. The usage of atoi is commented  here :
>
> https://docs.oracle.com/cd/E86824_01/html/E54766/atoi-3c.html
>
> „However, applications should not use the atoi(), atol(), or 
> atoll() functions unless they know the value represented by the 
> argument will be in range for the corresponding result type”
>
>       ……And here :
>
> https://pubs.opengroup.org/onlinepubs/009695399/functions/atoi.html
>
> “If the number is not known to be in range, /strtol/() 
> <https://pubs.opengroup.org/onlinepubs/009695399/functions/strtol.html> should 
> be used because /atoi/() is not required to perform any error checking”
>
> However  we  have  a number of  usages in the coding   where  atoi is 
> called without knowing that  the argument is in the allowed range .
>
> some examples :
>
> src/hotspot/share/runtime/arguments.cpp-382- if (match_option(option, 
> "-Dsun.java.launcher.pid=", &tail)) {
>
> src/hotspot/share/runtime/arguments.cpp:383: _sun_java_launcher_pid = 
> atoi(tail);
>
> src/hotspot/share/runtime/arguments.cpp-384- continue;
>
> src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c
>
> 455    value = getenv("_AWT_MAX_POLL_TIMEOUT");
>
> 456    if (value != NULL) {
>
> 457        AWT_MAX_POLL_TIMEOUT = atoi(value);
>
> src/java.desktop/unix/native/common/awt/X11Color.c-781- if 
> (getenv("CMAPSIZE") != 0) {
>
> src/java.desktop/unix/native/common/awt/X11Color.c:782: cmapsize = 
> atoi(getenv("CMAPSIZE"));
>
> Should I open a bug for these ?
>

Probably, two different bug are needed: hotspot/runtime and AWT.

Thanks,
Serguei

> Best regards, Matthias
>
> *From:*Thomas Stüfe <thomas.stuefe at gmail.com>
> *Sent:* Donnerstag, 12. September 2019 12:22
> *To:* Baesken, Matthias <matthias.baesken at sap.com>
> *Cc:* serviceability-dev at openjdk.java.net
> *Subject:* Re: RFR [XS]: 8230901: missing ReleaseStringUTFChars in 
> servicability native code
>
> Hi Matthias,
>
> your changes look good.
>
>
> an additional bug:
>
> http://cr.openjdk.java.net/~mbaesken/webrevs/8230901.0/src/jdk.hotspot.agent/solaris/native/libsaproc/saproc.cpp.frames.html 
> <http://cr.openjdk.java.net/%7Embaesken/webrevs/8230901.0/src/jdk.hotspot.agent/solaris/native/libsaproc/saproc.cpp.frames.html> 
>
>
>  698 #ifndef _LP64
>  699   atoi(cmdLine_cstr);
>  700   if (errno) {
>
> Behaviour of atoi() in error case is undefined. errno values are not 
> defined.
>
> See: https://pubs.opengroup.org/onlinepubs/009695399/functions/atoi.html
>
> And even if atoi would set errno, this is still not enough since errno 
> may contain a stale value. One would have to set errno=0 before the 
> function call.
>
>
> If you want to fix this too 'd suggest replacing this call with strtol().
>
> Cheers, Thomas
>
> On Thu, Sep 12, 2019 at 12:11 PM Baesken, Matthias 
> <matthias.baesken at sap.com <mailto:matthias.baesken at sap.com>> wrote:
>
>     Hello, please reviews this small change .
>
>     It adds  ReleaseStringUTFChars calls  at some places in early
>     return cases .
>
>     ( in src/jdk.hotspot.agent/solaris/native/libsaproc/saproc.cpp
>
>     THROW_NEW_DEBUGGER_EXCEPTION contains a return , see the macro
>     declaration
>
>     39 #define THROW_NEW_DEBUGGER_EXCEPTION(str) {
>     throwNewDebuggerException(env, str); return;}
>
>     )
>
>     Bug/webrev :
>
>     https://bugs.openjdk.java.net/browse/JDK-8230901
>
>     http://cr.openjdk.java.net/~mbaesken/webrevs/8230901.0/
>     <http://cr.openjdk.java.net/%7Embaesken/webrevs/8230901.0/>
>
>     Thanks, Matthias
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20190913/0fb3dc8a/attachment-0001.html>


More information about the serviceability-dev mailing list