Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960 [v3]

2024-06-26 Thread Adam Sotona
On Tue, 25 Jun 2024 13:47:39 GMT, Adam Sotona  wrote:

>> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
>> generation and unfortunately it causes StackOverflow on BigEndian platforms.
>> 
>> This patch converts all lambdas in ClassSpecializer into anonymous inner 
>> classes.
>> 
>> Please review and test on a BigEndian platform.
>> 
>> Thanks,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   more de-lambda work on ClassSpecializer

Thank you for confirmation.

-

PR Comment: https://git.openjdk.org/jdk/pull/19863#issuecomment-2191198224


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960 [v3]

2024-06-26 Thread Martin Doerr
On Tue, 25 Jun 2024 13:47:39 GMT, Adam Sotona  wrote:

>> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
>> generation and unfortunately it causes StackOverflow on BigEndian platforms.
>> 
>> This patch converts all lambdas in ClassSpecializer into anonymous inner 
>> classes.
>> 
>> Please review and test on a BigEndian platform.
>> 
>> Thanks,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   more de-lambda work on ClassSpecializer

The tests have passed on AIX, too.

-

PR Comment: https://git.openjdk.org/jdk/pull/19863#issuecomment-2191118572


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960 [v3]

2024-06-25 Thread Martin Doerr
On Tue, 25 Jun 2024 13:47:39 GMT, Adam Sotona  wrote:

>> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
>> generation and unfortunately it causes StackOverflow on BigEndian platforms.
>> 
>> This patch converts all lambdas in ClassSpecializer into anonymous inner 
>> classes.
>> 
>> Please review and test on a BigEndian platform.
>> 
>> Thanks,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   more de-lambda work on ClassSpecializer

Thanks! This looks better. `jtreg:test/jdk/java/lang/invoke/condy` have passed 
on linux ppc64 Big Endian. I'll put it in our nightly tests to run it on AIX, 
too.

-

PR Comment: https://git.openjdk.org/jdk/pull/19863#issuecomment-2189112288


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960 [v2]

2024-06-25 Thread Adam Sotona
On Tue, 25 Jun 2024 09:36:37 GMT, Adam Sotona  wrote:

>> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
>> generation and unfortunately it causes StackOverflow on BigEndian platforms.
>> 
>> This patch converts all lambdas in ClassSpecializer into anonymous inner 
>> classes.
>> 
>> Please review and test on a BigEndian platform.
>> 
>> Thanks,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   more lambdas conversions to fix bootstrap

Thanks for the report and patience.
Yes, CodeBuilder::withMethodBody is also internally using lambda.
Another version of the patch is ready for test.

Thanks!

-

PR Comment: https://git.openjdk.org/jdk/pull/19863#issuecomment-2189005614


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960 [v3]

2024-06-25 Thread Adam Sotona
> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
> generation and unfortunately it causes StackOverflow on BigEndian platforms.
> 
> This patch converts all lambdas in ClassSpecializer into anonymous inner 
> classes.
> 
> Please review and test on a BigEndian platform.
> 
> Thanks,
> Adam

Adam Sotona has updated the pull request incrementally with one additional 
commit since the last revision:

  more de-lambda work on ClassSpecializer

-

Changes:
  - all: https://git.openjdk.org/jdk/pull/19863/files
  - new: https://git.openjdk.org/jdk/pull/19863/files/357d36a0..1416d4d2

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk=19863=02
 - incr: https://webrevs.openjdk.org/?repo=jdk=19863=01-02

  Stats: 53 lines in 1 file changed: 4 ins; 0 del; 49 mod
  Patch: https://git.openjdk.org/jdk/pull/19863.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19863/head:pull/19863

PR: https://git.openjdk.org/jdk/pull/19863


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960 [v2]

2024-06-25 Thread Richard Reingruber
On Tue, 25 Jun 2024 09:36:37 GMT, Adam Sotona  wrote:

>> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
>> generation and unfortunately it causes StackOverflow on BigEndian platforms.
>> 
>> This patch converts all lambdas in ClassSpecializer into anonymous inner 
>> classes.
>> 
>> Please review and test on a BigEndian platform.
>> 
>> Thanks,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   more lambdas conversions to fix bootstrap

Unfortunately it is still failing. This is the exception stack trace:
[StackOverflow2.log](https://github.com/user-attachments/files/15971514/StackOverflow2.log)

Thanks, Richard.

-

PR Comment: https://git.openjdk.org/jdk/pull/19863#issuecomment-2188858307


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960

2024-06-25 Thread Adam Sotona
On Mon, 24 Jun 2024 16:01:41 GMT, Adam Sotona  wrote:

> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
> generation and unfortunately it causes StackOverflow on BigEndian platforms.
> 
> This patch converts all lambdas in ClassSpecializer into anonymous inner 
> classes.
> 
> Please review and test on a BigEndian platform.
> 
> Thanks,
> Adam

More lambdas converted, hopefully it is the last round.
@reinrich Please re-test.

Thank you.

-

PR Comment: https://git.openjdk.org/jdk/pull/19863#issuecomment-2188431487


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960 [v2]

2024-06-25 Thread Adam Sotona
> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
> generation and unfortunately it causes StackOverflow on BigEndian platforms.
> 
> This patch converts all lambdas in ClassSpecializer into anonymous inner 
> classes.
> 
> Please review and test on a BigEndian platform.
> 
> Thanks,
> Adam

Adam Sotona has updated the pull request incrementally with one additional 
commit since the last revision:

  more lambdas conversions to fix bootstrap

-

Changes:
  - all: https://git.openjdk.org/jdk/pull/19863/files
  - new: https://git.openjdk.org/jdk/pull/19863/files/ac8fb2d5..357d36a0

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk=19863=01
 - incr: https://webrevs.openjdk.org/?repo=jdk=19863=00-01

  Stats: 4 lines in 1 file changed: 2 ins; 0 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/19863.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19863/head:pull/19863

PR: https://git.openjdk.org/jdk/pull/19863


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960

2024-06-25 Thread Adam Sotona
On Mon, 24 Jun 2024 16:01:41 GMT, Adam Sotona  wrote:

> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
> generation and unfortunately it causes StackOverflow on BigEndian platforms.
> 
> This patch converts all lambdas in ClassSpecializer into anonymous inner 
> classes.
> 
> Please review and test on a BigEndian platform.
> 
> Thanks,
> Adam

Yes, I'm working on it. Class-File API avoids lambdas on critical JDK paths 
only. Unfortunately we did not have the full map of the critical paths on all 
platforms.

-

PR Comment: https://git.openjdk.org/jdk/pull/19863#issuecomment-2188311520


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960

2024-06-25 Thread Claes Redestad
On Mon, 24 Jun 2024 16:01:41 GMT, Adam Sotona  wrote:

> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
> generation and unfortunately it causes StackOverflow on BigEndian platforms.
> 
> This patch converts all lambdas in ClassSpecializer into anonymous inner 
> classes.
> 
> Please review and test on a BigEndian platform.
> 
> Thanks,
> Adam

Looks like there is a bootstrap cycle initializing this lambda in ClassBuilder: 
https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/lang/classfile/ClassBuilder.java#L202

I'm not sure, but it looks like the PPC VM might be passing args to the 
bootstrap method differently, which triggers adapting code in 
BootstrapMethodInvoker::pushMePullYou - this might be enough to start this 
cycle.

-

PR Comment: https://git.openjdk.org/jdk/pull/19863#issuecomment-2188298757


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960

2024-06-25 Thread Richard Reingruber
On Mon, 24 Jun 2024 22:11:55 GMT, Richard Reingruber  wrote:

>> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
>> generation and unfortunately it causes StackOverflow on BigEndian platforms.
>> 
>> This patch converts all lambdas in ClassSpecializer into anonymous inner 
>> classes.
>> 
>> Please review and test on a BigEndian platform.
>> 
>> Thanks,
>> Adam
>
> Hi Adam,
> 
> I've tested this change on a Linux PPC64 big endian system. Sadly I still get 
> StackOverflowErrors.
> I've run only test/jdk/java/lang/invoke/condy/ConstantBootstrapsTest.java. 
> I've experimented with `ThreadStackSize` and `VMThreadStackSize` without 
> success.
> 
> When running the test standalone I get the following message:
> 
> 
> ./jdk/bin/java
> -cp 
> testclasses:jtreg_latest/lib/testng-7.3.0.jar:jtreg_latest/lib/jcommander-1.82.jar
> -XX:+UnlockDiagnosticVMOptions
> -XX:UseBootstrapCallInfo=3
> -Xint
> org.testng.TestNG
> -testclass
> ConstantBootstrapsTest
> Error occurred during initialization of boot layer
> java.lang.StackOverflowError
> 
> 
> It's likely not a byte ordering problem since @offamitkumar cannot reproduce 
> the failures on s390x.

> @reinrich Could you try running with `-XX:+UnlockDiagnosticVMOptions 
> -XX:+ShowHiddenFrames` and share the full stacktrace again?

I've done that now. Please find it in the description/attachment of the 
[JBS-item](https://bugs.openjdk.org/browse/JDK-8334872).

-

PR Comment: https://git.openjdk.org/jdk/pull/19863#issuecomment-2188155291


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960

2024-06-24 Thread Chen Liang
On Mon, 24 Jun 2024 22:11:55 GMT, Richard Reingruber  wrote:

>> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
>> generation and unfortunately it causes StackOverflow on BigEndian platforms.
>> 
>> This patch converts all lambdas in ClassSpecializer into anonymous inner 
>> classes.
>> 
>> Please review and test on a BigEndian platform.
>> 
>> Thanks,
>> Adam
>
> Hi Adam,
> 
> I've tested this change on a Linux PPC64 big endian system. Sadly I still get 
> StackOverflowErrors.
> I've run only test/jdk/java/lang/invoke/condy/ConstantBootstrapsTest.java. 
> I've experimented with `ThreadStackSize` and `VMThreadStackSize` without 
> success.
> 
> When running the test standalone I get the following message:
> 
> 
> ./jdk/bin/java
> -cp 
> testclasses:jtreg_latest/lib/testng-7.3.0.jar:jtreg_latest/lib/jcommander-1.82.jar
> -XX:+UnlockDiagnosticVMOptions
> -XX:UseBootstrapCallInfo=3
> -Xint
> org.testng.TestNG
> -testclass
> ConstantBootstrapsTest
> Error occurred during initialization of boot layer
> java.lang.StackOverflowError
> 
> 
> It's likely not a byte ordering problem since @offamitkumar cannot reproduce 
> the failures on s390x.

@reinrich Could you try running with `-XX:+UnlockDiagnosticVMOptions 
-XX:+ShowHiddenFrames` and share the full stacktrace again?

-

PR Comment: https://git.openjdk.org/jdk/pull/19863#issuecomment-2187588334


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960

2024-06-24 Thread Richard Reingruber
On Mon, 24 Jun 2024 16:01:41 GMT, Adam Sotona  wrote:

> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
> generation and unfortunately it causes StackOverflow on BigEndian platforms.
> 
> This patch converts all lambdas in ClassSpecializer into anonymous inner 
> classes.
> 
> Please review and test on a BigEndian platform.
> 
> Thanks,
> Adam

Hi Adam,

I've tested this change on a Linux PPC64 big endian system. Sadly I still get 
StackOverflowErrors.
I've run only test/jdk/java/lang/invoke/condy/ConstantBootstrapsTest.java. I've 
experimented with `ThreadStackSize` and `VMThreadStackSize` without success.

When running the test standalone I get the following message:


./jdk/bin/java
-cp 
testclasses:jtreg_latest/lib/testng-7.3.0.jar:jtreg_latest/lib/jcommander-1.82.jar
-XX:+UnlockDiagnosticVMOptions
-XX:UseBootstrapCallInfo=3
-Xint
org.testng.TestNG
-testclass
ConstantBootstrapsTest
Error occurred during initialization of boot layer
java.lang.StackOverflowError


It's likely not a byte ordering problem since @offamitkumar cannot reproduce 
the failures on s390x.

-

PR Comment: https://git.openjdk.org/jdk/pull/19863#issuecomment-2187498690


Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960

2024-06-24 Thread Claes Redestad
On Mon, 24 Jun 2024 16:01:41 GMT, Adam Sotona  wrote:

> After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
> generation and unfortunately it causes StackOverflow on BigEndian platforms.
> 
> This patch converts all lambdas in ClassSpecializer into anonymous inner 
> classes.
> 
> Please review and test on a BigEndian platform.
> 
> Thanks,
> Adam

Marked as reviewed by redestad (Reviewer).

-

PR Review: https://git.openjdk.org/jdk/pull/19863#pullrequestreview-2136378062


RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960

2024-06-24 Thread Adam Sotona
After JDK-8294960 is java.lang.invoke.ClassSpecializer using lamdas for code 
generation and unfortunately it causes StackOverflow on BigEndian platforms.

This patch converts all lambdas in ClassSpecializer into anonymous inner 
classes.

Please review and test on a BigEndian platform.

Thanks,
Adam

-

Commit messages:
 - 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960

Changes: https://git.openjdk.org/jdk/pull/19863/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk=19863=00
  Issue: https://bugs.openjdk.org/browse/JDK-8334872
  Stats: 239 lines in 1 file changed: 65 ins; 45 del; 129 mod
  Patch: https://git.openjdk.org/jdk/pull/19863.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19863/head:pull/19863

PR: https://git.openjdk.org/jdk/pull/19863