[premain] need help merging g1BarrierSetC2.cpp

Andrew Dinn adinn at redhat.com
Thu Oct 10 08:46:48 UTC 2024


On 09/10/2024 22:23, ioi.lam at oracle.com wrote:
> I'm also seeing failures on macos-aarch64 and linux-aarch64.  In 
> addition to the tests I listed below, these two also fail reliably
> 
> runtime/cds/appcds/applications/MicronautFirstApp.java#leyden
> runtime/cds/appcds/applications/MicronautFirstApp.java#leyden_old

I'll see if I can debug these failures.

regards,


Andrew Dinn
-----------

> On 10/9/24 9:02 AM, ioi.lam at oracle.com wrote:
>> I am seeing some failures on linux/x64 with various assertion failures 
>> in the GC code, either during collection or gc verification.  I merged 
>> up to d504df0e3d7928f0e7ff10ace03e002953c6a58f from Andrew's repo.
>>
>> runtime/cds/appcds/applications/HelidonQuickStartSE.java#leyden
>> runtime/cds/appcds/applications/HelidonQuickStartSE.java#leyden_old
>> runtime/cds/appcds/applications/JavacBench.java#leyden
>> runtime/cds/appcds/applications/JavacBench.java#leyden_old
>> runtime/cds/appcds/applications/SpringPetClinic.java#leyden_old
>> runtime/cds/appcds/leyden/ExcludedClasses.java
>>
>> A sample stack trace
>>
>> #  SIGSEGV (0xb) at pc=0x00007ff1d9260f78, pid=472145, tid=472252
>> V  [libjvm.so+0x636f78]  oopDesc::size_given_klass(Klass*)+0x28 
>> (oop.inline.hpp:196)
>> V  [libjvm.so+0xd9e66d] 
>> G1ParScanThreadState::do_copy_to_survivor_space(G1HeapRegionAttr, oop, 
>> markWord)+0x9d  (g1ParScanThreadState.cpp:480)
>> V  [libjvm.so+0xda43db]  void 
>> G1ParScanThreadState::do_oop_evac<narrowOop>(narrowOop*)+0x12b 
>> (g1ParScanThreadState.cpp:221)
>> V  [libjvm.so+0xd9fa98] 
>> G1ParScanThreadState::trim_queue_to_threshold(unsigned int)+0x488 
>> (g1ParScanThreadState.cpp:334)
>> V  [libjvm.so+0xdb96fa] 
>> G1ParScanThreadState::trim_queue_partially()+0x3a 
>> (g1ParScanThreadState.inline.hpp:53)
>> V  [libjvm.so+0xdbe943]  void 
>> G1ScanHRForRegionClosure::ChunkScanner::on_dirty_cards<G1ScanHRForRegionClosure::scan_heap_roots(G1HeapRegion*)::{lambda(unsigned char*, unsigned char*)#1}>(G1ScanHRForRegionClosure::scan_heap_roots(G1HeapRegion*)::{lambda(unsigned char*, unsigned char*)#1}&&)+0x2c3  (g1RemSet.cpp:519)
>> V  [libjvm.so+0xdb6f39] 
>> G1RemSet::scan_heap_roots(G1ParScanThreadState*, unsigned int, 
>> G1GCPhaseTimes::GCParPhases, G1GCPhaseTimes::GCParPhases, bool)+0x5e9 
>> (g1RemSet.cpp:664)
>> V  [libjvm.so+0xdea89b] 
>> G1EvacuateRegionsTask::scan_roots(G1ParScanThreadState*, unsigned 
>> int)+0x4b  (g1YoungCollector.cpp:670)
>> V  [libjvm.so+0xdeac6a]  G1EvacuateRegionsBaseTask::work(unsigned 
>> int)+0x8a  (g1YoungCollector.cpp:656)
>> V  [libjvm.so+0x1a2b480]  WorkerThread::run()+0x80 (workerThread.cpp:70)
>> V  [libjvm.so+0x18cc40a]  Thread::call_run()+0xba (thread.cpp:245)
>> V  [libjvm.so+0x159e0f9]  thread_native_entry(Thread*)+0x1c9 
>> (os_linux.cpp:858)
>>
>> siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 
>> 0x000000000000010e
>>
>> I'll run tests on aarch64 as well and will report back when I get the 
>> results.
>>
>> Thanks
>>
>> - Ioi
>>
>>
>> On 10/9/24 8:23 AM, ioi.lam at oracle.com wrote:
>>> Thanks Andrew.
>>>
>>> I'll test your merge on our CI and then push to premain.
>>>
>>> - Ioi
>>>
>>> On 10/9/24 7:46 AM, Andrew Dinn wrote:
>>>> Hi Ioi/Vladimir,
>>>>
>>>> I merged the rest of master into premain, fixed the conflicts and 
>>>> pushed the result to my premain branch.
>>>>
>>>> https://urldefense.com/v3/__https://github.com/adinn/leyden/tree/premain__;!!ACWV5N9M2RV99hQ!L_H5Q7HrxgwFxgFHEDodn9bmN5PlYgD0PbjCSMB0D8AJpVB-zvJog8wGxXubkqGBozWm8phOCOc$
>>>> The merged code built and ran ok on aarch64. On x86 it built ok but 
>>>> crashed during the assembly run.
>>>>
>>>> The problem was that the x86 post barrier can now be called from C2 
>>>> with tmp and tmp2 allocated by the register allocator. So, that 
>>>> means both rcx and rscratch1 are possible values for register tmp. 
>>>> This is a problem because the x86 AOT variant of the barrier code 
>>>> pushes rcx and rscratch1 to the stack, loads the region grain shift 
>>>> address in to rscratch1 and the grain shift into into rcx. It has to 
>>>> be able to use rcx in order to be able to execute shrptr(tmp). 
>>>> However, if tmp == rcx then the unshifted value is restored into tmp 
>>>> when rcx is popped.
>>>>
>>>> I pushed a follow-up patch to my premain that avoids this problem. 
>>>> It uses a pushed register to do the shift and ensures that register 
>>>> differs from tmp and rcx.
>>>>
>>>> regards,
>>>>
>>>>
>>>> Andrew Dinn
>>>> -----------
>>>>
>>>>
>>>> On 09/10/2024 07:08, ioi.lam at oracle.com wrote:
>>>>> In the premain branch, we have made some changes in g1BarrierSetC2.cpp
>>>>>
>>>>>      commit cc111760a0dd123935e039feb19eaac742f865b2
>>>>>      Author: Vladimir Kozlov <vladimir.kozlov at oracle.com>
>>>>>      Date:   Mon Aug 26 14:21:28 2024
>>>>>
>>>>>      Cleanup AOT runtime constants code
>>>>>
>>>>>      commit c319a3ee2be0236feab88c9be66d71e6e93b53fc
>>>>>      Author: Andrew Dinn <adinn at redhat.com>
>>>>>      Date:   Wed Aug 21 07:48:22 2024
>>>>>
>>>>>      AOT G1 barrier loads region grain and card shifts via runtime 
>>>>> constants data area
>>>>>
>>>>> Recently, the following changes in g1BarrierSetC2.cpp have been 
>>>>> pushed to mainline that caused conflicts with the leyden changes.
>>>>>
>>>>>      commit 81ebbb2463df8b014bb209dc4028668fc78e8327
>>>>>      Author: Roberto Castañeda Lozano <rcastanedalo at openjdk.org>
>>>>>      Date:   Mon Oct 7 01:28:18 2024
>>>>>
>>>>>      8341525: G1: use bit clearing to remove tightly-coupled 
>>>>> initialization store pre-barriers
>>>>>
>>>>>      commit 0b467e902d591ae9feeec1669918d1588987cd1c
>>>>>      Author: Roberto Castañeda Lozano <rcastanedalo at openjdk.org>
>>>>>      Date:   Thu Oct 3 01:36:33 2024
>>>>>
>>>>>      8334060: Implementation of Late Barrier Expansion for G1
>>>>>
>>>>>
>>>>> When I tried merging with mainline, I couldn't merge these changes, 
>>>>> so I ended up merging to this one (just an hour prior to 0b467e9), 
>>>>> and pushed the result to premain.
>>>>>
>>>>>      commit c6e7e551928c04b74775b5d4c03eb31232aeb2c9 (master)
>>>>>      Author: Aleksey Shipilev <shade at openjdk.org>
>>>>>      Date:   Thu Oct 3 00:25:42 2024
>>>>>
>>>>>      8341091: CDS: Segmented roots array misses roots
>>>>>
>>>>> Andrew Dinn or Vladimir Kozlov, could you help merging with mainline?
>>>>>
>>>>> Thanks
>>>>>
>>>>> - Ioi
>>>>>
>>>>
> 

-- 
regards,


Andrew Dinn
-----------
Red Hat Distinguished Engineer
Red Hat UK Ltd
Registered in England and Wales under Company Registration No. 03798903
Directors: Michael Cunningham, Michael ("Mike") O'Neill



More information about the leyden-dev mailing list