RFR JDK-8022407 (round 2) sun/misc/CopyMemory.java fails with SIGSEGV in Unsafe_SetByte+0x35

Lois Foltan lois.foltan at oracle.com
Fri Aug 30 06:36:14 PDT 2013


On 8/29/2013 10:18 PM, David Holmes wrote:
> On 29/08/2013 10:01 PM, Lois Foltan wrote:
>>
>> On 8/29/2013 7:16 AM, David Holmes wrote:
>>> Hi Lois,
>>>
>>> Is this still needed:
>>>
>>>  142     PCH_FLAG/unsafe.o = $(PCH_FLAG/NO_PCH)
>>>
>>> given you no longer use -O0 ?
>> Hi David,
>> Yes, I believe so but this might be a cautionary change on my part. I
>> read the comment to imply that Clang does not support a precompiled
>> header compiled with an optimization level that is different than the
>> one used to compile the actual C++ file, this is why I chose to add
>> unsafe.o.
>
> I read the comment as only applying to a combination of -O0 with -O3. 
> So now the comment is inaccurate as it claims all files are compiled 
> with -O0.
>
> 133     # There are some files which don't like precompiled headers
> 134     # The following files are build with 'OPT_CFLAGS/NOOPT' (-O0) 
> in the opt build.
> 135     # But Clang doesn't support a precompiled header which was 
> compiled with -O3
> 136     # to be used in a compilation unit which uses '-O0'. We could 
> also prepare an
> 137     # extra '-O0' PCH file for the opt build and use it here, but 
> it's probably
> 138     # not worth the effort as long as only two files need this 
> special handling.
>
> Either the comment or the entry at line 142 need to be changed. (the 
> part about 'two files' is already out of date :( )

Hi David,
Line #142 is necessary.  If clang++ compiles unsafe.o with -O1 and tries 
to include the precompiled header that is compiled by default with -Os, 
(note that -Os is the current default, not -O3 as the comment 
indicates), the following compile time error is generated:

     error: __OPTIMIZE_SIZE__ predefined macro was enabled in PCH file 
but is currently disabled

So, the the comment is incorrect in many ways.  I have entered 
https://bugs.openjdk.java.net/browse/JDK-8024050, detailing the issues.

Thanks,
Lois

>
> David
> -----
>
>> Lois
>>
>>> Thanks,
>>> David
>>>
>>> On 29/08/2013 3:56 AM, Lois Foltan wrote:
>>>>
>>>> Please review the updated webrev:
>>>>      open webrev at
>>>> http://cr.openjdk.java.net/~hseigel/bug_jdk8022407.2/
>>>>
>>>> Bug:
>>>>      bug link at https://bugs.openjdk.java.net/browse/JDK-8022407
>>>>
>>>> Summary of fix:
>>>>
>>>>      The JDK 8 build on MacOS, when built with the Xcode 4.6.2 clang++
>>>> compiler, exhibited a compiler
>>>>      optimization issue when prims/unsafe.cpp was compiled at the
>>>> default -Os level. As a work around
>>>>      fix, knock the optimization level down down to -O1.
>>>>
>>>> Tests: MacOS: built fastdebug & product images using clang++ (ran 
>>>> JTREG
>>>> & vm.quick.testlist)
>>>>            built using llvm-g++ to verifyprims/unsafe.cpp remained
>>>> compiled at -Os
>>>>
>>>> Thank you, Lois
>>>>
>>>>
>>



More information about the hotspot-runtime-dev mailing list