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

Christian Thalinger christian.thalinger at oracle.com
Fri Aug 30 23:34:01 UTC 2013


On Aug 30, 2013, at 6:36 AM, Lois Foltan <lois.foltan at oracle.com> wrote:

> 
> 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)

That's because I took the comment verbatim from the Linux makefile.  Not good practice, I know.

-- Chris

> , 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 build-dev mailing list