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