RFR 8144278 [TESTBUG] hotspot/runtime/StackGuardPages/testme.sh should use native library build support

Gerald Thornbrugh gerald.thornbrugh at oracle.com
Thu Jun 2 17:06:49 UTC 2016


Hi Dmitry,

I will change the return in the "if (retval < 0)" statement to an "exit(1)".

Thanks,

Jerry
> Gerald,
>
>> Does this code snippet address your concerns with how “javaclassopt”
>> is created?
> Yes.
>
> PS: I used to return 7 to easy distinguish startup (env, command line
> etc) parameters error from other kind of errors. It's where exit(7)
> comes from in this test.
>    So it might be better to use exit(1) if (retval < 0)
>
> -Dmitry
>
> On 2016-06-02 19:25, Gerald Thornbrugh wrote:
>> Hi Dmitry,
>>
>> I will discuss the disabling of optimization with Erik Joelsson and get
>> back to you.
>>
>> Does this code snippet address your concerns with how “javaclassopt” is
>> created?
>>
>>    int retval;
>>    static char javaclassopt[4096];
>>    char *javaclasspath = NULL;
>>    char *javaclasspathopt = NULL;
>>
>>    printf("Test started with pid: %ld\n", (long) getpid());
>>
>>    /* set the java class path so the DoOverflow class can be found */
>>    javaclasspath = getenv("CLASSPATH");
>>
>>    retval = snprintf(javaclassopt, sizeof(javaclassopt),
>> "-Djava.class.path=%s",
>>        javaclasspath);
>>
>>    if (retval < 0) {
>>      fprintf(stderr, "Test ERROR. Problem creating javaclasspath\n");
>>      exit(7);
>>    }
>>    if (retval >= sizeof(javaclassopt)) {
>>      fprintf(stderr, "Test ERROR. CLASSPATH is too long\n");
>>      exit(7);
>>    }
>>
>> I will make the change you suggested for the usage() function.
>>
>> Thanks,
>>
>> Gerald
>>> On Jun 2, 2016, at 9:54 AM, Dmitry Samersoff
>>> <dmitry.samersoff at oracle.com <mailto:dmitry.samersoff at oracle.com>> wrote:
>>>
>>> Gerald,
>>>
>>> exeinvoke.c
>>>
>>> 127:
>>>   I think we should compile entire test (and probably all other tests)
>>> with disabled optimization (e.g. -g -O0) to simplify debugging if the
>>> test crash.
>>>
>>>
>>> 239:
>>>    Please declare a static variable:
>>>
>>>     static char javaclassopt[4096];
>>>
>>>   then use
>>>
>>>    snprintf(javaclassopt, sizeof(javaclassopt),
>>>        "-Djava.class.path=%s", javaclasspath);
>>>
>>>   and check it's return value.
>>>
>>>
>>> 295: Please change usage() to return value 7 rather than call exit and
>>>      change this line to
>>>
>>>       return usage();
>>>
>>>      to avoid unreachable statements.
>>>
>>> -Dmitry
>>>
>>> On 2016-06-02 18:28, Gerald Thornbrugh wrote:
>>>> Hi Everyone,
>>>>
>>>> Please review my changes to address JDK-8144278.
>>>>
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8144278
>>>>
>>>> JDK Webrev: http://cr.openjdk.java.net/~gthornbr/8144278/jdk-webrev.00/
>>>> <http://cr.openjdk.java.net/%7Egthornbr/8144278/jdk-webrev.00/>
>>>>
>>>> Hotspot Webrev:
>>>> http://cr.openjdk.java.net/~gthornbr/8144278/hotspot-webrev.00/
>>>> <http://cr.openjdk.java.net/%7Egthornbr/8144278/hotspot-webrev.00/>
>>>>
>>>>
>>>> The fix makes changes to two areas.
>>>>
>>>> The JDK changes where needed to add a path to the libjvm.so library when
>>>> linking test executables.
>>>> These changes where provide by Erik Joelsson.
>>>>
>>>> The Hotspot changes addressed the following issues:
>>>>
>>>> The StackGuardPages test directory needed to be added to the list of
>>>> native executable tests.
>>>>
>>>> The libjvm.so and libpthread.so libraries needed to be added to the
>>>> LDFLAGS definition for the
>>>> "invoke" test executable.
>>>>
>>>> The StackGuardPages/testme.sh script needed to specify that
>>>> DoOverflow.java must be complied,
>>>> specify the new location of the "invoke" test executable and remove all
>>>> portions of the script that
>>>> compiled and linked DoOverflow.java and invoke.c.
>>>>
>>>> The native test source file "invoke.c" needed to be renamed
>>>> "exeinvoke.c" so the build system will
>>>> automatically build it.
>>>>
>>>> The native test source file exeinvoke.c needed to be changed to compile
>>>> without warnings, pass the
>>>> path of the DoOverflow.class file to the function which starts the JVM
>>>> and keep the linux gcc compiler
>>>> optimizer from in-lining the do_overflow() function which caused it not
>>>> to get called.
>>>>
>>>> Please let me know if you have any questions or concerns.
>>>>
>>>> Thanks,
>>>>
>>>> Gerald
>>>>




More information about the build-dev mailing list