On Thu, 8 Oct 2026 04:21:22 GMT, Vladimir Petko <[email protected]> wrote:

> Implement suggestions in https://bugs.openjdk.org/browse/JDK-8387577. 
> This PR uses "approximate" pc that matches the registration offset of oops 
> map.
> 
> 
> Testing - tier1 and tier2 test run
> 
> make test TEST=":tier1 :tier2" CONF=linux-s390x-server-fastdebug
> ==============================
> Test summary
> ==============================
>    TEST                                              TOTAL  PASS  FAIL ERROR  
> SKIP   
>>> jtreg:test/hotspot/jtreg:tier1                     3887  3411     8     0   
>>> 468 <<
>    jtreg:test/jdk:tier1                               2656  2605     0     0  
>   51   
>    jtreg:test/langtools:tier1                         4775  4763     0     0  
>   12   
>    jtreg:test/jaxp:tier1                                 0     0     0     0  
>    0   
>    jtreg:test/lib-test:tier1                            41    41     0     0  
>    0   
>>> jtreg:test/hotspot/jtreg:tier2                     1059   846     3     0   
>>> 210 <<
>>> jtreg:test/jdk:tier2                               4609  4351     2     0   
>>> 256 <<
>    jtreg:test/langtools:tier2                           14    12     0     0  
>    2   
>    jtreg:test/jaxp:tier2                               524   523     0     0  
>    1   
>    jtreg:test/docs:tier2                                 4     0     0     0  
>    4   
> ==============================
> TEST FAILURE
> 
> Failed tests also fail on master branch for the same reason, 
> test/hotspot/jtreg/runtime/ErrorHandling/CreateCoredumpOnCrash.java` passes 
> after enabling `ulimit -c unlimited`.
> 
> 
> ==============================
> Test summary
> ==============================
>    TEST                                              TOTAL  PASS  FAIL ERROR  
> SKIP   
>    jtreg:test/hotspot/jtreg/compiler/c2/igvn/TestOptimizeTrichotomy.java#Xcomp
>>>                                                       1     0     1     0   
>>>   0 <<
>    
> jtreg:test/hotspot/jtreg/compiler/c2/igvn/TestOptimizeTrichotomy.java#vanilla
>>>                                                       1     0     1     0   
>>>   0 <<
>    
> jtreg:test/hotspot/jtreg/compiler/escapeAnalysis/TestBCEscapeAnalyzerOverflow.java
>>>                                                       1     0     1     0   
>>>   0 <<
>    jtreg:test/hotspot/jtreg/compiler/gcbarriers/TestZGCBarrierElision.java#Z
>>>                                                       1     0     1     0   
>>>   0 <<
>    
> jtreg:test/hotspot/jtreg/compiler/loopopts/superword/TestDoNotFilterNaNSummands.java
>>>                                                       1     0     1     0   
>>>   0 <<
>  ...

Hi Vladimir,
your fix looks good to me in general. I do think though you have to handle `pc 
== null` in `JavaThread::pd_last_frame()` independently of `ASSERT`.
Thanks, Richard.

src/hotspot/cpu/s390/sharedRuntime_s390.cpp line 4218:

> 4216:   __ push_frame_abi160(0);
> 4217:   Label frame_pc;
> 4218:  __ z_larl(Z_R1_scratch, frame_pc);

I thought `__ get_PC(Z_R1_scratch);` would be ok here but I see 
`RuntimeBlob::RuntimeBlob()` copies the `CodeBuffer` so you need to use the 
label for `frame_pc` to patch this instruction.

src/hotspot/os_cpu/linux_s390/javaThread_linux_s390.cpp line 36:

> 34:   address pc = _anchor.last_Java_pc();
> 35: 
> 36: #ifdef ASSERT

`pc == null` is valid here when a c2 runtime stub called into the vm (I 
explained it in this [PR 
comment](https://github.com/openjdk/jdk/pull/31441#discussion_r3441548556)). 
You have to handle it outside of the `#ifdef ASSERT`.

-------------

Changes requested by rrich (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/33262#pullrequestreview-5466482658
PR Review Comment: https://git.openjdk.org/jdk/pull/33262#discussion_r4227461065
PR Review Comment: https://git.openjdk.org/jdk/pull/33262#discussion_r4227251824

Reply via email to