Re: RFR: 8334872: BigEndian: java/lang/invoke/condy Tests failing since JDK-8294960 [v3]
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]
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]
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]
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]
> 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]
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
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]
> 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
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
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
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
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
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
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
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