From haosun at openjdk.org Fri Aug 1 00:04:02 2025 From: haosun at openjdk.org (Hao Sun) Date: Fri, 1 Aug 2025 00:04:02 GMT Subject: RFR: 8361950: Update to use jtreg 8 In-Reply-To: References: Message-ID: <6CRZBpGwS69ZgWKLmIG7UOj9jPqVxvieJKEAT9lao-Y=.af3bdd20-0a45-4928-8c5b-197b377e8ba3@github.com> On Wed, 30 Jul 2025 16:26:55 GMT, Jaikiran Pai wrote: > Hello Hao, > > > Hi, I encountered two jtreg failures with this new version `8` on both AArch64 and x86_64 platforms. > > Note that these two jtreg cases can pass with jtreg `7.5.2+1` version. > > Thank you for bringing this up. I'm able to reproduce this issue with this newer version of jtreg. I'll take a look to see what's going on. Thanks for your confirm, Jaikiran. Forgot to mention that I tested `jdk_all, hotspot_all, langtools_all` with jtreg `8` and only found these two test failures. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26261#issuecomment-3141675024 From hannesw at openjdk.org Fri Aug 1 08:38:00 2025 From: hannesw at openjdk.org (Hannes =?UTF-8?B?V2FsbG7DtmZlcg==?=) Date: Fri, 1 Aug 2025 08:38:00 GMT Subject: Integrated: 8294074: Make other specs more discoverable from the API docs In-Reply-To: References: Message-ID: On Wed, 30 Jul 2025 10:51:47 GMT, Hannes Walln?fer wrote: > Please review a doc-only change to the API overview page to make other specs more discoverable. The following sentence is added at the end of the overview text: > >> [Related documents](https://cr.openjdk.org/~hannesw/8294074/docs.00/specs/index.html) specify the Java language, the Java virtual machine, various protocols and file formats pertaining to the Java platform, and tools included in the JDK. > > The first sentence of the overview text is also rephrased. > > The new API overview page [can be viewed here](https://cr.openjdk.org/~hannesw/8294074/docs.00/api/index.html). This pull request has now been integrated. Changeset: 7d63c9fa Author: Hannes Walln?fer URL: https://git.openjdk.org/jdk/commit/7d63c9fa4d7d03c8565d0491e7ff93087b79cc39 Stats: 6 lines in 1 file changed: 3 ins; 0 del; 3 mod 8294074: Make other specs more discoverable from the API docs Reviewed-by: mr ------------- PR: https://git.openjdk.org/jdk/pull/26547 From erikj at openjdk.org Fri Aug 1 14:21:55 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 1 Aug 2025 14:21:55 GMT Subject: RFR: 8361142: Improve custom hooks for makefiles In-Reply-To: <91cuhK8a2VHENkKujTT5Q7CYxYjnK8qV3jULeLXi9jU=.d12fe818-ca41-4448-8a8f-120c60a219d7@github.com> References: <91cuhK8a2VHENkKujTT5Q7CYxYjnK8qV3jULeLXi9jU=.d12fe818-ca41-4448-8a8f-120c60a219d7@github.com> Message-ID: On Tue, 1 Jul 2025 07:46:12 GMT, Magnus Ihse Bursie wrote: > Add some additional and more fine-grained way in which custom makefiles can be integrated. Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26060#pullrequestreview-3079432687 From erikj at openjdk.org Fri Aug 1 17:23:56 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 1 Aug 2025 17:23:56 GMT Subject: RFR: 8346719: Add relaunchers to the static JDK image for missing executables [v3] In-Reply-To: References: Message-ID: On Fri, 27 Jun 2025 16:15:57 GMT, Magnus Ihse Bursie wrote: >> In the static JDK image, a single humongous java executable is generated, and no other launcher, such as javac. This makes it impossible to run our jtreg tests, which assume these are present. >> >> The solution is fortunately simply: we just need to add a bunch of trivial launchers, which are thin wrappers that execute the main java binary, with the proper arguments. This will result in the same behavior as the normal dynamic launchers, only that we will need to take the detour of launching another process instead of calling directly into the JLI library. > > Magnus Ihse Bursie has updated the pull request incrementally with one additional commit since the last revision: > > Remove problemlisting make/ModuleWrapper.gmk line 82: > 80: TARGETS += $(LAUNCHERS_LIST) > 81: endif > 82: endif I think it would be cleaner if this could be kept in LauncherCommon.gmk and avoid having ModuleWrapper.gmk involved in this. I think it can be done relatively easily. In SetupBuildLauncherBody, instead of constructing the variable `$(MODULE)_INCLUDED_LAUNCHERS`, declare dependencies for `$(LAUNCHER_LIST)`, something like this: $(LAUNCHER_LIST): $$($1) TARGETS += $(LAUNCHER_LIST) Then put the the recipe for `$(LAUNCHER_LIST)` at the end of LauncherCommon.gmk. The $(LAUNCHER_LIST) value will sometimes be added to TARGETS multiple times, but that's ok I think. make/StaticLibs.gmk line 163: > 161: # $2: The launcher name > 162: define SetupRelauncher > 163: $1_$2_LAUNCHER_ARGS_LINE := $$(shell cat $$(SUPPORT_OUTPUTDIR)/static-native/relaunchers/$1/$2-relauncher-arguments.txt) `$(call ReadFile, ...)` also, double space? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24380#discussion_r2248147264 PR Review Comment: https://git.openjdk.org/jdk/pull/24380#discussion_r2248474424 From erik.joelsson at oracle.com Fri Aug 1 17:54:56 2025 From: erik.joelsson at oracle.com (Erik Joelsson) Date: Fri, 1 Aug 2025 10:54:56 -0700 Subject: hotspot jtreg tests take WARNING_CFLAGS_JDK_CONLY flags In-Reply-To: References: Message-ID: <6a386790-d220-4e7a-8fdb-f0ddaf421035@oracle.com> Not sure about intended. The 'JDK' variable naming was introduced to basically mean not Hotspot. What flags that should apply to tests isn't always clear. I don't think that flags currently assigned to variables with JVM in the name should apply to hotspot tests. I think we just treat all native tests the same here and give them the JDK flags. This area could probably still need some careful sorting out and cleanup. /Erik On 7/10/25 08:23, Baesken, Matthias wrote: > > When? trying the GCC static analyzer (-fanalyzer flag) > > diff --git a/make/autoconf/flags-cflags.m4 b/make/autoconf/flags-cflags.m4 > > index e80d9a98957..9d1ae60047b 100644 > > --- a/make/autoconf/flags-cflags.m4 > > +++ b/make/autoconf/flags-cflags.m4 > > @@ -610,7 +610,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER], > > ?? # CFLAGS WARNINGS STUFF > > ?? # Set JVM_CFLAGS warning handling > > ?? if test "x$TOOLCHAIN_TYPE" = xgcc; then > > - WARNING_CFLAGS_JDK_CONLY="$WARNINGS_ENABLE_ALL_CFLAGS" > > +??? # enable -fanalyzer (but better only for gcc12 + , and also only > for C) > > +??? # too many strange / shaky fd leak warnings > > +??? WARNING_CFLAGS_JDK_CONLY="-fanalyzer -Wno-analyzer-fd-leak > $WARNINGS_ENABLE_ALL_CFLAGS" > > WARNING_CFLAGS_JDK_CXXONLY="$WARNINGS_ENABLE_ALL_CXXFLAGS" > > WARNING_CFLAGS_JVM="$WARNINGS_ENABLE_ALL_CXXFLAGS" > > I noticed that the WARNING_CFLAGS_JDK_CONLY? go into the? hotspot?? > jtreg tests, e.g.? : > > /jdk/test/hotspot/jtreg/runtime/ErrorHandling/libTestDwarfHelper.h:46:6: > error: dereference of NULL '0' [CWE-476] > [-Werror=analyzer-null-dereference] > > ?? 46 |?? *x = 34; // Crash > > ????? |?? ~~~^~~~ > > ? 'dereference_null': event 1 > > ??? | > > ??? |?? 46 |?? *x = 34; // Crash > > ??? |????? |?? ~~~^~~~ > > ??? |????? |????? | > > ??? |????? |????? (1) dereference of NULL '0' > > This might be intended but?? I was surprised that the HS? C tests take > WARNING_CFLAGS_JDK_CONLY? ??!??? Is this intended or not ? > > Best regards, Matthias > -------------- next part -------------- An HTML attachment was scrubbed... URL: From erikj at openjdk.org Fri Aug 1 18:02:54 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 1 Aug 2025 18:02:54 GMT Subject: RFR: 8362244: Devkit's Oracle Linux base OS keyword is incorrectly documented [v3] In-Reply-To: References: <6Guorw8ns5l-546zfI-7dRVud0FY1A4QBGlBWQvA6qc=.c54e534f-af8e-4aa1-bd0a-fca9ddfd666e@github.com> Message-ID: On Wed, 16 Jul 2025 18:52:26 GMT, Volkan Yazici wrote: >> `open/doc/building.md` uses the incorrect `OEL6` keyword to denote the Oracle Enterprise Linux base OS distribution for Devkit ? replaced it with the correct one instead, i.e., `OL`. > > Volkan Yazici has updated the pull request incrementally with one additional commit since the last revision: > > Update `doc/building.html Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26311#pullrequestreview-3080113895 From erikj at openjdk.org Fri Aug 1 18:17:55 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 1 Aug 2025 18:17:55 GMT Subject: RFR: 8362885: A more formal way to mark javac's Flags that belong to a specific Symbol type only [v3] In-Reply-To: References: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> Message-ID: <7-OHL7cQf8cKDTulwBLVf1DD6gIkSuX12P-TvbMvPa4=.736c0d91-a0cd-4cac-8d8c-251967742250@github.com> On Mon, 28 Jul 2025 06:50:47 GMT, Jan Lahoda wrote: >> This PR proposes to improve handling of javac's `Flags` in two ways: >> - for each flag, there's now an informational annotation specifying what is the target Symbol type. Only targets right now are `TypeSymbol`s, `MethodSymbol`s and `VarSymbol`s. If we ran out of flags for `TypeSymbol`s, we could split those to module/package/class/type variable, but it does not seem to be quite necessary yet. There's an auxiliary special `BLOCK`, which is for `JCBlock`. >> - the manually handled `Flags.Flag` enum is replaced with autogenerated `FlagsEnum` >> >> This is inspired by: >> https://github.com/openjdk/jdk/pull/26181#pullrequestreview-2997428662 >> >> There may be some better to handle `Flags` eventually, but this hopefully improves the current situation at least somewhat, by providing more formal way to say the flags' target, and restricting the need to read comments and search for free flags. >> >> As a side-effect of this annotation, the `test/langtools/tools/javac/flags/FlagsTest.java` now also prints which flags are free, for each Symbol type. >> >> (I will remove the `build` label for now, until discussion on javac level is done, and will re-add it if we decide the goal to autogenerate the FlagsEnum makes sense.) > > Jan Lahoda has updated the pull request incrementally with one additional commit since the last revision: > > Reverting runtime checks, as suggested. Marked as reviewed by erikj (Reviewer). make/modules/jdk.compiler/Gensrc.gmk line 79: > 77: > 78: ################################################################################ > 79: Can remove one of these comment delimiter lines. ------------- PR Review: https://git.openjdk.org/jdk/pull/26452#pullrequestreview-3080147875 PR Review Comment: https://git.openjdk.org/jdk/pull/26452#discussion_r2248577111 From erik.joelsson at oracle.com Fri Aug 1 18:25:02 2025 From: erik.joelsson at oracle.com (Erik Joelsson) Date: Fri, 1 Aug 2025 11:25:02 -0700 Subject: JDK-8363942: Unable to make images after "make -t" In-Reply-To: References: Message-ID: On 7/29/25 08:16, Andrew Leonard wrote: > Hi, > > I?m ?looking for help on resolving this bug please > (https://bugs.openjdk.org/browse/JDK-8363942), that we see building > Eclipse Temurin, whereby we build the ?exploded image(default)? > target, then externally ?sign? the binaries, then ?touch? the targets > using ?make -t? so they don?t get re-built, then build the ?images?? > However, after recent jdk-25 changes in idk-25+26 (I think by > 8349665), this process fails. > We?ve found a workaround by manually deleting the file > ?create-main-targets-include? before calling make images, but that > doesn?t seem ideal. > I've never used `make -t` so I'm not surprised it doesn't work well with the OpenJDK build. We use a lot of meta targets and tricks throughout the build, and I would expect things to behave unexpectedly when using it. I'm curious why you think you need to run `make -t` after the signing procedure? As long as none of the signing operations are resetting the modification times on the signed binaries to an earlier timestamp than the build produced, and you didn't touch any other files or source files, then rebuilding shouldn't overwrite any of the already built or signed binaries. There can of course be bugs, and historically I'm sure there have been, causing things to be rebuilt unnecessarily, so with an approach like this I would definitely recommend adding a verification step after the build that checks all binaries for signatures. Related to this, have you looked into https://bugs.openjdk.org/browse/JDK-8350801? It was meant to make external signing procedures easier to integrate with the build system. /Erik > Many thanks > Andrew > Unless otherwise stated above: > > IBM United Kingdom Limited > Registered in England and Wales with number 741598 > Registered office: Building C, IBM Hursley Office, Hursley Park Road, > Winchester, Hampshire SO21 2JN -------------- next part -------------- An HTML attachment was scrubbed... URL: From erikj at openjdk.org Fri Aug 1 18:28:56 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 1 Aug 2025 18:28:56 GMT Subject: RFR: 8364177: JDK fails to build due to undefined symbol in libpng on LoongArch64 In-Reply-To: References: Message-ID: <4HeV-EoMcR1tBbXn11liF56ksr2IuG1b7WhVW3_lsnk=.ae004f63-4a7e-45af-bad6-b86323ea7aec@github.com> On Mon, 28 Jul 2025 09:25:34 GMT, Ao Qi wrote: > After [JDK-8329004](https://bugs.openjdk.org/browse/JDK-8329004), the following code was added. > > > #ifndef PNG_LOONGARCH_LSX_OPT > # if defined(__loongarch_sx) > # define PNG_LOONGARCH_LSX_OPT 1 > # else > # define PNG_LOONGARCH_LSX_OPT 0 > # endif > #endif > > > Some compilers on LoongArch64 platforms enable `__loongarch_sx`, which causes `PNG_LOONGARCH_LSX_OPT` to be defined and an undefined error occurs. Refer to [JDK-8078245](https://bugs.openjdk.org/browse/JDK-8078245), add `-DPNG_LOONGARCH_LSX_OPT=0` to `LIBSPLASHSCREEN_CFLAGS` flags. Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26501#pullrequestreview-3080173442 From erikj at openjdk.org Fri Aug 1 18:29:57 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 1 Aug 2025 18:29:57 GMT Subject: RFR: 8361950: Update to use jtreg 8 In-Reply-To: References: Message-ID: On Fri, 11 Jul 2025 09:05:40 GMT, Christian Stein wrote: > Please review the change to update to using jtreg 8. > > The primary change is to the `jib-profiles.js` file, which specifies the version of jtreg to use, for those systems that rely on this file. In addition, the requiredVersion has been updated in the various `TEST.ROOT` files. Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26261#pullrequestreview-3080178709 From vyazici at openjdk.org Fri Aug 1 20:39:00 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Fri, 1 Aug 2025 20:39:00 GMT Subject: Integrated: 8362244: Devkit's Oracle Linux base OS keyword is incorrectly documented In-Reply-To: <6Guorw8ns5l-546zfI-7dRVud0FY1A4QBGlBWQvA6qc=.c54e534f-af8e-4aa1-bd0a-fca9ddfd666e@github.com> References: <6Guorw8ns5l-546zfI-7dRVud0FY1A4QBGlBWQvA6qc=.c54e534f-af8e-4aa1-bd0a-fca9ddfd666e@github.com> Message-ID: On Tue, 15 Jul 2025 09:58:02 GMT, Volkan Yazici wrote: > `open/doc/building.md` uses the incorrect `OEL6` keyword to denote the Oracle Enterprise Linux base OS distribution for Devkit ? replaced it with the correct one instead, i.e., `OL`. This pull request has now been integrated. Changeset: 7ea08d39 Author: Volkan Yazici URL: https://git.openjdk.org/jdk/commit/7ea08d3928032aad05ce347272083a2be7d83546 Stats: 12 lines in 2 files changed: 0 ins; 2 del; 10 mod 8362244: Devkit's Oracle Linux base OS keyword is incorrectly documented Reviewed-by: erikj ------------- PR: https://git.openjdk.org/jdk/pull/26311 From aoqi at openjdk.org Sat Aug 2 00:56:02 2025 From: aoqi at openjdk.org (Ao Qi) Date: Sat, 2 Aug 2025 00:56:02 GMT Subject: RFR: 8364177: JDK fails to build due to undefined symbol in libpng on LoongArch64 In-Reply-To: References: Message-ID: On Mon, 28 Jul 2025 09:25:34 GMT, Ao Qi wrote: > After [JDK-8329004](https://bugs.openjdk.org/browse/JDK-8329004), the following code was added. > > > #ifndef PNG_LOONGARCH_LSX_OPT > # if defined(__loongarch_sx) > # define PNG_LOONGARCH_LSX_OPT 1 > # else > # define PNG_LOONGARCH_LSX_OPT 0 > # endif > #endif > > > Some compilers on LoongArch64 platforms enable `__loongarch_sx`, which causes `PNG_LOONGARCH_LSX_OPT` to be defined and an undefined error occurs. Refer to [JDK-8078245](https://bugs.openjdk.org/browse/JDK-8078245), add `-DPNG_LOONGARCH_LSX_OPT=0` to `LIBSPLASHSCREEN_CFLAGS` flags. Thanks for the reviews! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26501#issuecomment-3146072074 From duke at openjdk.org Sat Aug 2 00:56:02 2025 From: duke at openjdk.org (duke) Date: Sat, 2 Aug 2025 00:56:02 GMT Subject: RFR: 8364177: JDK fails to build due to undefined symbol in libpng on LoongArch64 In-Reply-To: References: Message-ID: On Mon, 28 Jul 2025 09:25:34 GMT, Ao Qi wrote: > After [JDK-8329004](https://bugs.openjdk.org/browse/JDK-8329004), the following code was added. > > > #ifndef PNG_LOONGARCH_LSX_OPT > # if defined(__loongarch_sx) > # define PNG_LOONGARCH_LSX_OPT 1 > # else > # define PNG_LOONGARCH_LSX_OPT 0 > # endif > #endif > > > Some compilers on LoongArch64 platforms enable `__loongarch_sx`, which causes `PNG_LOONGARCH_LSX_OPT` to be defined and an undefined error occurs. Refer to [JDK-8078245](https://bugs.openjdk.org/browse/JDK-8078245), add `-DPNG_LOONGARCH_LSX_OPT=0` to `LIBSPLASHSCREEN_CFLAGS` flags. @theaoqi Your change (at version 2078e5eb1336ff4f00dccc1702c2c11df32bc266) is now ready to be sponsored by a Committer. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26501#issuecomment-3146072490 From aoqi at openjdk.org Mon Aug 4 07:22:54 2025 From: aoqi at openjdk.org (Ao Qi) Date: Mon, 4 Aug 2025 07:22:54 GMT Subject: RFR: 8364177: JDK fails to build due to undefined symbol in libpng on LoongArch64 In-Reply-To: References: Message-ID: On Mon, 28 Jul 2025 09:25:34 GMT, Ao Qi wrote: > After [JDK-8329004](https://bugs.openjdk.org/browse/JDK-8329004), the following code was added. > > > #ifndef PNG_LOONGARCH_LSX_OPT > # if defined(__loongarch_sx) > # define PNG_LOONGARCH_LSX_OPT 1 > # else > # define PNG_LOONGARCH_LSX_OPT 0 > # endif > #endif > > > Some compilers on LoongArch64 platforms enable `__loongarch_sx`, which causes `PNG_LOONGARCH_LSX_OPT` to be defined and an undefined error occurs. Refer to [JDK-8078245](https://bugs.openjdk.org/browse/JDK-8078245), add `-DPNG_LOONGARCH_LSX_OPT=0` to `LIBSPLASHSCREEN_CFLAGS` flags. Could any committer please help to sponsor this patch? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26501#issuecomment-3149424916 From andrew.m.leonard at ibm.com Mon Aug 4 08:27:54 2025 From: andrew.m.leonard at ibm.com (Andrew Leonard) Date: Mon, 4 Aug 2025 08:27:54 +0000 Subject: JDK-8363942: Unable to make images after "make -t" In-Reply-To: References: Message-ID: Hi Erik, Thank you for the suggestions. Yes, I agree make -t is not a great solution, and also confirm it?s odd even though the signed dylib?s timestamps are later, they get re-built.. which is probably a bug in itself. We do have a post build ?Sign Verification? job as you mention, which picks up these issues, which as you suggest is very useful and necessary. JDK-8350801 I am aware of, I discussed this with Frederic at the time as being useful. However, at the moment the difficulty is calling out from a GNU make file at one of these ?exit? points to be able to call a Jenkins Job to do the signing. Unfortunately, as it stands we have to use an Eclipse Signing Jenkins job running on a secure remote node, so we have to call out to this specific Jenkins job, which is very difficult to do from a GNU make file. There is potential for us to raise an Eclipse feature request for an alternative API for us, which could be used in this environment. I am going to do some more investigation into why the dylib?s get rebuilt after signing, as if we could remove the ?make -t? hack then that would be ideal. I am guessing maybe there are some ?rules? that need a tweak or two. Many thanks, Andrew Sent from Outlook for Mac From: Erik Joelsson Date: Friday, 1 August 2025 at 19:25 To: Andrew Leonard , build-dev at openjdk.org Subject: [EXTERNAL] Re: JDK-8363942: Unable to make images after "make -t" This Message Is From an External Sender This message came from outside your organization. Report Suspicious On 7/29/25 08:16, Andrew Leonard wrote: Hi, I?m looking for help on resolving this bug please (https://bugs.openjdk.org/browse/JDK-8363942), that we see building Eclipse Temurin, whereby we build the ?exploded image(default)? target, then externally ?sign? the binaries, then ?touch? the targets using ?make -t? so they don?t get re-built, then build the ?images?? However, after recent jdk-25 changes in idk-25+26 (I think by 8349665), this process fails. We?ve found a workaround by manually deleting the file ?create-main-targets-include? before calling make images, but that doesn?t seem ideal. I've never used `make -t` so I'm not surprised it doesn't work well with the OpenJDK build. We use a lot of meta targets and tricks throughout the build, and I would expect things to behave unexpectedly when using it. I'm curious why you think you need to run `make -t` after the signing procedure? As long as none of the signing operations are resetting the modification times on the signed binaries to an earlier timestamp than the build produced, and you didn't touch any other files or source files, then rebuilding shouldn't overwrite any of the already built or signed binaries. There can of course be bugs, and historically I'm sure there have been, causing things to be rebuilt unnecessarily, so with an approach like this I would definitely recommend adding a verification step after the build that checks all binaries for signatures. Related to this, have you looked into https://bugs.openjdk.org/browse/JDK-8350801? It was meant to make external signing procedures easier to integrate with the build system. /Erik Many thanks Andrew Unless otherwise stated above: IBM United Kingdom Limited Registered in England and Wales with number 741598 Registered office: Building C, IBM Hursley Office, Hursley Park Road, Winchester, Hampshire SO21 2JN Unless otherwise stated above: IBM United Kingdom Limited Registered in England and Wales with number 741598 Registered office: Building C, IBM Hursley Office, Hursley Park Road, Winchester, Hampshire SO21 2JN -------------- next part -------------- An HTML attachment was scrubbed... URL: From aoqi at openjdk.org Mon Aug 4 12:40:04 2025 From: aoqi at openjdk.org (Ao Qi) Date: Mon, 4 Aug 2025 12:40:04 GMT Subject: Integrated: 8364177: JDK fails to build due to undefined symbol in libpng on LoongArch64 In-Reply-To: References: Message-ID: On Mon, 28 Jul 2025 09:25:34 GMT, Ao Qi wrote: > After [JDK-8329004](https://bugs.openjdk.org/browse/JDK-8329004), the following code was added. > > > #ifndef PNG_LOONGARCH_LSX_OPT > # if defined(__loongarch_sx) > # define PNG_LOONGARCH_LSX_OPT 1 > # else > # define PNG_LOONGARCH_LSX_OPT 0 > # endif > #endif > > > Some compilers on LoongArch64 platforms enable `__loongarch_sx`, which causes `PNG_LOONGARCH_LSX_OPT` to be defined and an undefined error occurs. Refer to [JDK-8078245](https://bugs.openjdk.org/browse/JDK-8078245), add `-DPNG_LOONGARCH_LSX_OPT=0` to `LIBSPLASHSCREEN_CFLAGS` flags. This pull request has now been integrated. Changeset: a9f3d3a2 Author: Ao Qi Committer: Erik Joelsson URL: https://git.openjdk.org/jdk/commit/a9f3d3a290060f98967feaad2fa03ef077a64534 Stats: 2 lines in 1 file changed: 1 ins; 0 del; 1 mod 8364177: JDK fails to build due to undefined symbol in libpng on LoongArch64 Reviewed-by: prr, aivanov, erikj ------------- PR: https://git.openjdk.org/jdk/pull/26501 From aoqi at openjdk.org Mon Aug 4 13:14:13 2025 From: aoqi at openjdk.org (Ao Qi) Date: Mon, 4 Aug 2025 13:14:13 GMT Subject: RFR: 8364177: JDK fails to build due to undefined symbol in libpng on LoongArch64 In-Reply-To: <4HeV-EoMcR1tBbXn11liF56ksr2IuG1b7WhVW3_lsnk=.ae004f63-4a7e-45af-bad6-b86323ea7aec@github.com> References: <4HeV-EoMcR1tBbXn11liF56ksr2IuG1b7WhVW3_lsnk=.ae004f63-4a7e-45af-bad6-b86323ea7aec@github.com> Message-ID: On Fri, 1 Aug 2025 18:26:03 GMT, Erik Joelsson wrote: >> After [JDK-8329004](https://bugs.openjdk.org/browse/JDK-8329004), the following code was added. >> >> >> #ifndef PNG_LOONGARCH_LSX_OPT >> # if defined(__loongarch_sx) >> # define PNG_LOONGARCH_LSX_OPT 1 >> # else >> # define PNG_LOONGARCH_LSX_OPT 0 >> # endif >> #endif >> >> >> Some compilers on LoongArch64 platforms enable `__loongarch_sx`, which causes `PNG_LOONGARCH_LSX_OPT` to be defined and an undefined error occurs. Refer to [JDK-8078245](https://bugs.openjdk.org/browse/JDK-8078245), add `-DPNG_LOONGARCH_LSX_OPT=0` to `LIBSPLASHSCREEN_CFLAGS` flags. > > Marked as reviewed by erikj (Reviewer). @erikj79, thanks! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26501#issuecomment-3150658075 From cstein at openjdk.org Tue Aug 5 16:03:07 2025 From: cstein at openjdk.org (Christian Stein) Date: Tue, 5 Aug 2025 16:03:07 GMT Subject: RFR: 8361950: Update to use jtreg 8 In-Reply-To: References: Message-ID: <1XRUup7RXkUWm_2yscYV2M-m4ooHr70QdwcVVB7zxDI=.d641c6f9-9dd9-4da7-8599-a164274b9d93@github.com> On Fri, 11 Jul 2025 09:05:40 GMT, Christian Stein wrote: > Please review the change to update to using jtreg 8. > > The primary change is to the `jib-profiles.js` file, which specifies the version of jtreg to use, for those systems that rely on this file. In addition, the requiredVersion has been updated in the various `TEST.ROOT` files. Both tests seem to make hard assumptions on where binary files of `@library` classes are stored. - [TestSPISigned.java#L60-L62](https://github.com/openjdk/jdk/blob/master/test/jdk/java/security/SignedJar/spi-calendar-provider/TestSPISigned.java#L60-L62) - [resexhausted003.java#L83-L96](https://github.com/openjdk/jdk/blob/master/test/hotspot/jtreg/vmTestbase/nsk/jvmti/ResourceExhausted/resexhausted003.java#L83-L96) The storage location changed due to https://bugs.openjdk.org/browse/CODETOOLS-7902847 - it might change again in the near future. Thus, both tests need to be updated to work correctly without relying on a specific location of compiled library classes. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26261#issuecomment-3155714592 From jwilhelm at openjdk.org Tue Aug 5 17:37:57 2025 From: jwilhelm at openjdk.org (Jesper Wilhelmsson) Date: Tue, 5 Aug 2025 17:37:57 GMT Subject: [jdk25] RFR: 8364038: Remove EA from the JDK 25 version string with first RC promotion Message-ID: Removing EA from the version string. ------------- Commit messages: - 8364038: Remove EA from the JDK 25 version string with first RC promotion Changes: https://git.openjdk.org/jdk/pull/26647/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26647&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8364038 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26647.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26647/head:pull/26647 PR: https://git.openjdk.org/jdk/pull/26647 From mikael at openjdk.org Tue Aug 5 17:37:57 2025 From: mikael at openjdk.org (Mikael Vidstedt) Date: Tue, 5 Aug 2025 17:37:57 GMT Subject: [jdk25] RFR: 8364038: Remove EA from the JDK 25 version string with first RC promotion In-Reply-To: References: Message-ID: On Tue, 5 Aug 2025 17:28:04 GMT, Jesper Wilhelmsson wrote: > Removing EA from the version string. Marked as reviewed by mikael (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26647#pullrequestreview-3089140874 From erikj at openjdk.org Tue Aug 5 17:56:07 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 5 Aug 2025 17:56:07 GMT Subject: [jdk25] RFR: 8364038: Remove EA from the JDK 25 version string with first RC promotion In-Reply-To: References: Message-ID: On Tue, 5 Aug 2025 17:28:04 GMT, Jesper Wilhelmsson wrote: > Removing EA from the version string. Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26647#pullrequestreview-3089193365 From iris at openjdk.org Tue Aug 5 18:10:03 2025 From: iris at openjdk.org (Iris Clark) Date: Tue, 5 Aug 2025 18:10:03 GMT Subject: [jdk25] RFR: 8364038: Remove EA from the JDK 25 version string with first RC promotion In-Reply-To: References: Message-ID: On Tue, 5 Aug 2025 17:28:04 GMT, Jesper Wilhelmsson wrote: > Removing EA from the version string. Marked as reviewed by iris (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26647#pullrequestreview-3089230312 From cstein at openjdk.org Tue Aug 5 19:31:05 2025 From: cstein at openjdk.org (Christian Stein) Date: Tue, 5 Aug 2025 19:31:05 GMT Subject: [jdk25] RFR: 8364038: Remove EA from the JDK 25 version string with first RC promotion In-Reply-To: References: Message-ID: On Tue, 5 Aug 2025 17:28:04 GMT, Jesper Wilhelmsson wrote: > Removing EA from the version string. Marked as reviewed by cstein (Committer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26647#pullrequestreview-3089445914 From jwilhelm at openjdk.org Tue Aug 5 23:20:09 2025 From: jwilhelm at openjdk.org (Jesper Wilhelmsson) Date: Tue, 5 Aug 2025 23:20:09 GMT Subject: [jdk25] Integrated: 8364038: Remove EA from the JDK 25 version string with first RC promotion In-Reply-To: References: Message-ID: On Tue, 5 Aug 2025 17:28:04 GMT, Jesper Wilhelmsson wrote: > Removing EA from the version string. This pull request has now been integrated. Changeset: 73c28c2e Author: Jesper Wilhelmsson URL: https://git.openjdk.org/jdk/commit/73c28c2e3dc08f263be4c537c09c2763b87ca122 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod 8364038: Remove EA from the JDK 25 version string with first RC promotion Reviewed-by: mikael, erikj, iris, cstein ------------- PR: https://git.openjdk.org/jdk/pull/26647 From stuefe at openjdk.org Wed Aug 6 05:41:38 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Wed, 6 Aug 2025 05:41:38 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default Message-ID: A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. ------------- Commit messages: - tolerate sigaction failing - Fixes - fix - start+repro-case Changes: https://git.openjdk.org/jdk/pull/26615/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26615&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8364611 Stats: 196 lines in 5 files changed: 195 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26615.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26615/head:pull/26615 PR: https://git.openjdk.org/jdk/pull/26615 From erikj at openjdk.org Wed Aug 6 12:25:05 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 6 Aug 2025 12:25:05 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default In-Reply-To: References: Message-ID: On Mon, 4 Aug 2025 08:40:13 GMT, Thomas Stuefe wrote: > A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. > > The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. > > See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . > > The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. Build changes look trivially good. ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26615#pullrequestreview-3092284286 From rriggs at openjdk.org Wed Aug 6 14:20:04 2025 From: rriggs at openjdk.org (Roger Riggs) Date: Wed, 6 Aug 2025 14:20:04 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default In-Reply-To: References: Message-ID: On Mon, 4 Aug 2025 08:40:13 GMT, Thomas Stuefe wrote: > A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. > > The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. > > See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . > > The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. src/java.base/unix/native/libjava/childproc.c line 429: > 427: } > 428: > 429: // Childs should be started with default signal disposition for SIGPIPE Editorial: "Childs" -> Children for plural, "Child" for singular. Here and in tests. test/jdk/java/lang/ProcessBuilder/childSignalDisposition/exePrintSignalDisposition.c line 60: > 58: struct sigaction act; > 59: if (sigaction(signals[n].sig, NULL, &act) != 0) { > 60: perror("sigaction"); The sigaction error message goes to stderr, so it is does not appear in line with the signal name. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26615#discussion_r2257297399 PR Review Comment: https://git.openjdk.org/jdk/pull/26615#discussion_r2257335209 From duke at openjdk.org Wed Aug 6 19:34:36 2025 From: duke at openjdk.org (Saint Wesonga) Date: Wed, 6 Aug 2025 19:34:36 GMT Subject: RFR: 8364664: gtest death tests failing on Windows Message-ID: https://github.com/openjdk/jdk/commit/0054bbed7fce5b8566655d6910b09b10c952e609 (from https://bugs.openjdk.org/browse/JDK-8343756) caused the gtest death tests to fail on Windows with the error message "Caught std::exception-derived exception escaping the death test statement. Exception message: unknown file: error: SEH exception with code 0xc0000005 thrown in the test body." The error message is from the catch block in https://github.com/google/googletest/blob/v1.14.0/googletest/include/gtest/internal/gtest-death-test-internal.h#L198-L212 In the failing death tests, the gtests start another process and expect the child process to be terminated by JVM error handling code. However, the structured exception handling code in the googletest code ends up getting executed instead. The death tests expect execution to continue after the instruction that triggered the exception by writing to the poissoned page. This change proposes build Windows gtests without structured exception handling to avoid changing the flow of exceptions in OpenJDK test code. The effect of this change is to stop using the [SEH path in the HandleSehExceptionsInMethodIfSupported method](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2603) and [directly start the test](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2612). All the Windows gtests now pass with this change. ------------- Commit messages: - Disable structured exception handling in gtests on Windows Changes: https://git.openjdk.org/jdk/pull/26661/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26661&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8364664 Stats: 3 lines in 1 file changed: 1 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/26661.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26661/head:pull/26661 PR: https://git.openjdk.org/jdk/pull/26661 From erikj at openjdk.org Wed Aug 6 21:52:18 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 6 Aug 2025 21:52:18 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: <2pCKvDxDkjNa0545s8fB_4S8u_ARV8U9xrTKB1xEPMg=.7cfa4b5f-2838-47bf-8274-885544db4424@github.com> On Wed, 6 Aug 2025 18:05:24 GMT, Saint Wesonga wrote: > https://github.com/openjdk/jdk/commit/0054bbed7fce5b8566655d6910b09b10c952e609 (from https://bugs.openjdk.org/browse/JDK-8343756) caused the gtest death tests to fail on Windows with the error message "Caught std::exception-derived exception escaping the death test statement. Exception message: unknown file: error: SEH exception with code 0xc0000005 thrown in the test body." The error message is from the catch block in https://github.com/google/googletest/blob/v1.14.0/googletest/include/gtest/internal/gtest-death-test-internal.h#L198-L212 > > In the failing death tests, the gtests start another process and expect the child process to be terminated by JVM error handling code. However, the structured exception handling code in the googletest code ends up getting executed instead. The death tests expect execution to continue after the instruction that triggered the exception by writing to the poissoned page. This change proposes build Windows gtests without structured exception handling to avoid changing the flow of exceptions in OpenJDK test code. The effect of this change is to stop using the [SEH path in the HandleSehExceptionsInMethodIfSupported method](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2603) and [directly start the test](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2612). > > All the Windows gtests now pass with this change. >From a build/makefile point of view, this looks fine, but I would like input from someone more familiar with GTest as well. ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26661#pullrequestreview-3094426151 From kbarrett at openjdk.org Thu Aug 7 00:27:14 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 7 Aug 2025 00:27:14 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: On Wed, 6 Aug 2025 18:05:24 GMT, Saint Wesonga wrote: > https://github.com/openjdk/jdk/commit/0054bbed7fce5b8566655d6910b09b10c952e609 (from https://bugs.openjdk.org/browse/JDK-8343756) caused the gtest death tests to fail on Windows with the error message "Caught std::exception-derived exception escaping the death test statement. Exception message: unknown file: error: SEH exception with code 0xc0000005 thrown in the test body." The error message is from the catch block in https://github.com/google/googletest/blob/v1.14.0/googletest/include/gtest/internal/gtest-death-test-internal.h#L198-L212 > > In the failing death tests, the gtests start another process and expect the child process to be terminated by JVM error handling code. However, the structured exception handling code in the googletest code ends up getting executed instead. The death tests expect execution to continue after the instruction that triggered the exception by writing to the poissoned page. This change proposes build Windows gtests without structured exception handling to avoid changing the flow of exceptions in OpenJDK test code. The effect of this change is to stop using the [SEH path in the HandleSehExceptionsInMethodIfSupported method](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2603) and [directly start the test](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2612). > > All the Windows gtests now pass with this change. How is it that we (Oracle) don't see these gtest death test failures in our CI? I'm guessing others (like SAP - @tstuefe ?) aren't either, since this issue is newly reported while the causing change was made more than 8 months ago. The code in gtest-death-test-internal.h#L198-L212 referenced in the PR description is conditionalized on GTEST_HAS_EXCEPTIONS, which leads me to wonder why exceptions are enabled. If not for that, we wouldn't be in that code. That led me to wonder why, on Windows, we build libgtest and rebuild libjvm with exceptions enabled, by using -EHsc instead of no -EH option as done for the non-gtest libjvm? https://github.com/openjdk/jdk/blame/f95af744b07a9ec87e2507b3d584cbcddc827bbd/make/hotspot/lib/CompileGtest.gmk#L71 https://github.com/openjdk/jdk/blame/f95af744b07a9ec87e2507b3d584cbcddc827bbd/make/hotspot/lib/CompileGtest.gmk#L101 That decision seems pretty old, like maybe from the initial introduction of gtest. I haven't tracked down why, or whether the reasons are still valid. I think it would be better to change that, assuming that's possible. I was concerned that this might effectively undo JDK-8185734, since the suggestion in JBS was to conditionalize some code on GTEST_HAS_SEH being true. But it looks like the actual change didn't do that. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3162014034 From rriggs at openjdk.org Thu Aug 7 01:32:22 2025 From: rriggs at openjdk.org (Roger Riggs) Date: Thu, 7 Aug 2025 01:32:22 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default In-Reply-To: References: Message-ID: On Mon, 4 Aug 2025 08:40:13 GMT, Thomas Stuefe wrote: > A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. > > The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. > > See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . > > The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. While you're looking at childproc.c, can you update the comment at line 375 that references "closeDescriptors". It got missed. There's a separate bug for that [JDK-8364822](https://bugs.openjdk.org/browse/JDK-8364822) but if its convenient to fix. tnx ------------- PR Comment: https://git.openjdk.org/jdk/pull/26615#issuecomment-3162123827 From stuefe at openjdk.org Thu Aug 7 05:41:45 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Thu, 7 Aug 2025 05:41:45 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default [v2] In-Reply-To: References: Message-ID: > A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. > > The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. > > See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . > > The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. Thomas Stuefe has updated the pull request incrementally with one additional commit since the last revision: Feedback Roger ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26615/files - new: https://git.openjdk.org/jdk/pull/26615/files/b607b252..fa1be838 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26615&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26615&range=00-01 Stats: 3 lines in 2 files changed: 0 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/26615.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26615/head:pull/26615 PR: https://git.openjdk.org/jdk/pull/26615 From lmesnik at openjdk.org Thu Aug 7 05:54:53 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Thu, 7 Aug 2025 05:54:53 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode Message-ID: The fix added JVMTI stress testing mode. This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. The agent has 2 modes now: - regular that is compatible with most of tests including other jvmti, jdi and jdb tests - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. Note, that flagless tests are excluded automatically and not executed in this mode. ------------- Commit messages: - problemlist and exclusion fiexd. - fixed IR framework - Merge branch 'master' of https://github.com/openjdk/jdk into jvmti-stress-agent - fixed small issues - Revert "updated struct to c++" - Merge branch 'master' of https://github.com/openjdk/jdk into jvmti-stress-agent - fixed vm death - updated struct to c++ - lib updated - more fixes - ... and 7 more: https://git.openjdk.org/jdk/compare/7e484e2a...cb9c6457 Changes: https://git.openjdk.org/jdk/pull/26360/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8364973 Stats: 1175 lines in 6 files changed: 1173 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/26360.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26360/head:pull/26360 PR: https://git.openjdk.org/jdk/pull/26360 From stuefe at openjdk.org Thu Aug 7 06:09:15 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Thu, 7 Aug 2025 06:09:15 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default [v2] In-Reply-To: References: Message-ID: <_PzM_ySKqe40uJn5ZhSXJdVJ80J-Us8UbT0GGJW5lRw=.65632516-5765-41c8-b962-311f1351eb38@github.com> On Thu, 7 Aug 2025 05:41:45 GMT, Thomas Stuefe wrote: >> A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. >> >> The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. >> >> See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . >> >> The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. > > Thomas Stuefe has updated the pull request incrementally with one additional commit since the last revision: > > Feedback Roger @RogerRiggs Thanks for your review! Addressed in update. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26615#issuecomment-3162632014 From stuefe at openjdk.org Thu Aug 7 06:09:17 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Thu, 7 Aug 2025 06:09:17 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default [v2] In-Reply-To: References: Message-ID: <0Q7gCa7CWceJqA7LCN3wxmWhVvxstuGGOzRBPKEGNkI=.396ad6ec-1650-426f-bf49-9b46c3f91453@github.com> On Wed, 6 Aug 2025 14:04:38 GMT, Roger Riggs wrote: >> Thomas Stuefe has updated the pull request incrementally with one additional commit since the last revision: >> >> Feedback Roger > > src/java.base/unix/native/libjava/childproc.c line 429: > >> 427: } >> 428: >> 429: // Childs should be started with default signal disposition for SIGPIPE > > Editorial: "Childs" -> Children for plural, "Child" for singular. Here and in tests. Fixed > test/jdk/java/lang/ProcessBuilder/childSignalDisposition/exePrintSignalDisposition.c line 60: > >> 58: struct sigaction act; >> 59: if (sigaction(signals[n].sig, NULL, &act) != 0) { >> 60: perror("sigaction"); > > The sigaction error message goes to stderr, so it is does not appear in line with the signal name. Fixed ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26615#discussion_r2259171437 PR Review Comment: https://git.openjdk.org/jdk/pull/26615#discussion_r2259171720 From stuefe at openjdk.org Thu Aug 7 06:54:42 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Thu, 7 Aug 2025 06:54:42 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default [v3] In-Reply-To: References: Message-ID: > A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. > > The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. > > See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . > > The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. Thomas Stuefe has updated the pull request incrementally with one additional commit since the last revision: fix comments about closeDescriptors ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26615/files - new: https://git.openjdk.org/jdk/pull/26615/files/fa1be838..38648cb4 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26615&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26615&range=01-02 Stats: 29 lines in 4 files changed: 9 ins; 0 del; 20 mod Patch: https://git.openjdk.org/jdk/pull/26615.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26615/head:pull/26615 PR: https://git.openjdk.org/jdk/pull/26615 From erikj at openjdk.org Thu Aug 7 13:20:20 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Thu, 7 Aug 2025 13:20:20 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode In-Reply-To: References: Message-ID: <6i_NUjWgiZ71wdex51k2-J86RrWhOeb7T4Z1qHxq_9g=.3cf3fbeb-6953-4eb7-a988-62bc750136c0@github.com> On Thu, 17 Jul 2025 02:39:15 GMT, Leonid Mesnik wrote: > The fix added JVMTI stress testing mode. > > This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. > > I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. > > The agent has 2 modes now: > - regular that is compatible with most of tests including other jvmti, jdi and jdb tests > - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests > > The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. > Note, that flagless tests are excluded automatically and not executed in this mode. make/RunTests.gmk line 64: > 62: > 63: AGENT_PREFIX := lib > 64: AGENT_EXT := .so We already have `LIBRARY_PREFIX` and `SHARED_LIBRARY_SUFFIX` defined in spec.gmk. To make those available in a test prebuilt scenario, they need to also be defined in RunTestPrebuiltSpec.gmk. Then you can use those instead of defining these. make/RunTests.gmk line 215: > 213: $(eval $(call ParseKeywordVariable, JTREG, \ > 214: SINGLE_KEYWORDS := JOBS TIMEOUT_FACTOR FAILURE_HANDLER_TIMEOUT \ > 215: TEST_MODE ASSERT VERBOSE RETAIN TEST_THREAD_FACTORY JVMTI_STRESS_AGENT MAX_MEM RUN_PROBLEM_LISTS \ Could you add this list element in a way that doesn't make the lines any longer? make/RunTests.gmk line 892: > 890: $1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \ > 891: $$(addprefix $$($1_TEST_ROOT)/, ProblemList-jvmti-stress-agent.txt) \ > 892: )) Please use regular parentheses when referencing variables in makefiles. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2260294410 PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2260298782 PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2260294596 From rriggs at openjdk.org Thu Aug 7 14:20:17 2025 From: rriggs at openjdk.org (Roger Riggs) Date: Thu, 7 Aug 2025 14:20:17 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default [v3] In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 06:54:42 GMT, Thomas Stuefe wrote: >> A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. >> >> The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. >> >> See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . >> >> The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. > > Thomas Stuefe has updated the pull request incrementally with one additional commit since the last revision: > > fix comments about closeDescriptors It looks like I created a merge conflict by asking to fix these. Another PR https://git.openjdk.org/jdk/pull/26667 is also changing them. (At the time the other PR had not started). The least chaos may be created by backing out those changes from this PR. (Unless you like your words better than PR#26667). ------------- PR Comment: https://git.openjdk.org/jdk/pull/26615#issuecomment-3164396666 From duke at openjdk.org Thu Aug 7 16:55:48 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Thu, 7 Aug 2025 16:55:48 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency Message-ID: In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. linux-x64 GCC master real 81.39 user 3352.15 sys 287.49 JDK-8365053 real 81.94 user 3030.24 sys 295.82 linux-x64 Clang master real 43.44 user 2082.93 sys 130.70 JDK-8365053 real 38.44 user 1723.80 sys 117.68 linux-aarch64 GCC master real 1188.08 user 2015.22 sys 175.53 JDK-8365053 real 1019.85 user 1667.45 sys 171.86 ------------- Commit messages: - refresh Changes: https://git.openjdk.org/jdk/pull/26681/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8365053 Stats: 41 lines in 1 file changed: 1 ins; 28 del; 12 mod Patch: https://git.openjdk.org/jdk/pull/26681.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26681/head:pull/26681 PR: https://git.openjdk.org/jdk/pull/26681 From shade at openjdk.org Thu Aug 7 17:10:15 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 7 Aug 2025 17:10:15 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 16:47:04 GMT, Francesco Andreuzzi wrote: > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 src/hotspot/share/precompiled/precompiled.hpp line 29: > 27: > 28: // These header files are included in at least 130 C++ files, as of > 29: // measurements made in November 2018. This list excludes files named Keep this comment, just update the date (seeing how threshold is the same?). ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2260927049 From duke at openjdk.org Thu Aug 7 17:18:16 2025 From: duke at openjdk.org (Daniel Hu) Date: Thu, 7 Aug 2025 17:18:16 GMT Subject: RFR: 8341735: Rewrite the build/AbsPathsInImage.java test to not load the entire file at once [v4] In-Reply-To: References: Message-ID: <87aN_24_hPMJkFOh3XQHRXmVO2iRz08jODDYvjCpVOs=.2e911345-04af-4709-9dac-0a2169e6b388@github.com> On Wed, 9 Jul 2025 22:28:56 GMT, Daniel Hu wrote: >> These changes should prevent entire binary files from being loaded into memory for build/AbsPathsInImage.java test. I chose a default buffer size of 8KB since BufferedInputStream uses that, but open to alternative solutions. GHA passes and test passes on linux x64. > > Daniel Hu has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision: > > - Merge branch 'openjdk:master' into 8341735 > - redid byte matching which should fix cross chunk strings > - style improvements > - remove 8341024 > - remove trailing whitespace > - fix I'll push another update soon to fix the speed issue ------------- PR Comment: https://git.openjdk.org/jdk/pull/26030#issuecomment-3165089009 From duke at openjdk.org Thu Aug 7 17:24:13 2025 From: duke at openjdk.org (Saint Wesonga) Date: Thu, 7 Aug 2025 17:24:13 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 00:24:10 GMT, Kim Barrett wrote: > The code in gtest-death-test-internal.h#L198-L212 referenced in the PR description is conditionalized on GTEST_HAS_EXCEPTIONS, which leads me to wonder why exceptions are enabled. If not for that, we wouldn't be in that code. > > That led me to wonder why, on Windows, we build libgtest and rebuild libjvm with exceptions enabled, by using -EHsc instead of no -EH option as done for the non-gtest libjvm? > > https://github.com/openjdk/jdk/blame/f95af744b07a9ec87e2507b3d584cbcddc827bbd/make/hotspot/lib/CompileGtest.gmk#L71 https://github.com/openjdk/jdk/blame/f95af744b07a9ec87e2507b3d584cbcddc827bbd/make/hotspot/lib/CompileGtest.gmk#L101 > > That decision seems pretty old, like maybe from the initial introduction of gtest. I haven't tracked down why, or whether the reasons are still valid. I think it would be better to change that, assuming that's possible. This warning from the C++ compiler (after removing the 2 -EHsc lines) indicates that gtest code is using C++ exception handling: c:\progra~1\mib055~1\2022\enterprise\vc\tools\msvc\14.44.35207\include__msvc_ostream.hpp(781): error C2220: the following warning is treated as an error c:\progra~1\mib055~1\2022\enterprise\vc\tools\msvc\14.44.35207\include__msvc_ostream.hpp(781): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc c:\progra~1\mib055~1\2022\enterprise\vc\tools\msvc\14.44.35207\include__msvc_ostream.hpp(781): note: the template instantiation context (the oldest one first) is c:\repos\googletest\googletest\include\gtest/gtest-message.h(118): note: see reference to function template instantiation 'std::basic_ostream> &std::operator <<>(std::basic_ostream> &,const char *)' being compiled > How is it that we (Oracle) don't see these gtest death test failures in our CI? I'm guessing others (like SAP - @tstuefe ?) aren't either, since this issue is newly reported while the causing change was made more than 8 months ago. > Should gtests be enabled in the pre-checkin GitHub actions to prevent regressions? I think they take a few minutes to execute. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3165102917 PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3165108189 From duke at openjdk.org Thu Aug 7 17:28:14 2025 From: duke at openjdk.org (Saint Wesonga) Date: Thu, 7 Aug 2025 17:28:14 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 00:24:10 GMT, Kim Barrett wrote: > I was concerned that this might effectively undo JDK-8185734, since the suggestion in JBS was to conditionalize some code on GTEST_HAS_SEH being true. But it looks like the actual change didn't do that. Thanks for pointing this out. Let me investigate. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3165116409 From shade at openjdk.org Thu Aug 7 17:35:17 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 7 Aug 2025 17:35:17 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 16:47:04 GMT, Francesco Andreuzzi wrote: > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 Also, maybe check in the generation script as well? I think a subfolder here would be fine: https://github.com/openjdk/jdk/tree/master/src/utils. It would be nice if the output of that script could be simply piped into `precompiled.hpp`, so we can use it later without extra work. We can, technically, hook it up a similar way SortIncludes.java is currently done, but I think it is unnecessary at this point. In a perfect world we would not be needing precompiled headers. In less ideal world, having a jtreg test that warns us that a new popular header appeared, or that older header is not as popular anymore, would be handy. Again, this is something out of scope for this PR. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3165135998 From shade at openjdk.org Thu Aug 7 18:03:14 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 7 Aug 2025 18:03:14 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 16:47:04 GMT, Francesco Andreuzzi wrote: > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 On my M1, with some AV software that always get in the way, I am seeing 15% faster build, which saves about half a minute. This is great! CONF=macosx-aarch64-server-fastdebug LOG=info make hotspot 1245.30s user 230.07s system 640% cpu 3:50.49 total CONF=macosx-aarch64-server-fastdebug LOG=info make hotspot 1064.59s user 203.24s system 618% cpu 3:20.09 total ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3165209211 From duke at openjdk.org Thu Aug 7 18:51:04 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Thu, 7 Aug 2025 18:51:04 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v2] In-Reply-To: References: Message-ID: > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: keep comment ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26681/files - new: https://git.openjdk.org/jdk/pull/26681/files/9e0cb7e8..a75494f1 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=00-01 Stats: 3 lines in 1 file changed: 3 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/26681.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26681/head:pull/26681 PR: https://git.openjdk.org/jdk/pull/26681 From duke at openjdk.org Thu Aug 7 18:51:05 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Thu, 7 Aug 2025 18:51:05 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v2] In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 17:07:17 GMT, Aleksey Shipilev wrote: >> Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: >> >> keep comment > > src/hotspot/share/precompiled/precompiled.hpp line 29: > >> 27: >> 28: // These header files are included in at least 130 C++ files, as of >> 29: // measurements made in November 2018. This list excludes files named > > Keep this comment, just update the date (seeing how threshold is the same?). The part about `.inline.hpp` is not relevant anymore though, I've seen significant improvements after including a couple of them. I'll keep the rest. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2261151719 From duke at openjdk.org Thu Aug 7 18:51:06 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Thu, 7 Aug 2025 18:51:06 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v2] In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 18:44:29 GMT, Francesco Andreuzzi wrote: >> src/hotspot/share/precompiled/precompiled.hpp line 29: >> >>> 27: >>> 28: // These header files are included in at least 130 C++ files, as of >>> 29: // measurements made in November 2018. This list excludes files named >> >> Keep this comment, just update the date (seeing how threshold is the same?). > > The part about `.inline.hpp` is not relevant anymore though, I've seen significant improvements after including a couple of them. I'll keep the rest. a75494f10f47a032f01e7e967c3b937166d8780d ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2261153641 From erikj at openjdk.org Thu Aug 7 19:54:13 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Thu, 7 Aug 2025 19:54:13 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v2] In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 18:51:04 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: > > keep comment I tried it on Windows. Build time for hotspot was basically the same before and after, so no regression at least. So I'm fine with this change. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3165525209 From duke at openjdk.org Thu Aug 7 20:00:14 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Thu, 7 Aug 2025 20:00:14 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 17:32:35 GMT, Aleksey Shipilev wrote: > Also, maybe check in the generation script as well? I think a subfolder here would be fine: https://github.com/openjdk/jdk/tree/master/src/utils. It would be nice if the output of that script could be simply piped into `precompiled.hpp`, so we can use it later without extra work. > > We can, technically, hook it up a similar way SortIncludes.java is currently done, but I think it is unnecessary at this point. In a perfect world we would not be needing precompiled headers. In less ideal world, having a jtreg test that warns us that a new popular header appeared, or that older header is not as popular anymore, would be handy. Again, this is something out of scope for this PR. I'll add the generation script, it looks like something that could be useful at some point in the future. I think there should be a human curator though, because the process is not completely automatic. For example, when the threshold is set to 50 I get this compilation error: /jdk/src/hotspot/share/compiler/compilerEvent.cpp:59:36: error: redefinition of 'phase_names' with a different type: 'GrowableArray *' vs 'const char *[100]' static GrowableArray* phase_names = nullptr; ^ /jdk/src/hotspot/share/opto/phasetype.hpp:147:20: note: previous definition is here static const char* phase_names[] = { It could happen with any threshold, even 130 as the codebase evolves. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3165535039 From asemenyuk at openjdk.org Thu Aug 7 20:14:30 2025 From: asemenyuk at openjdk.org (Alexey Semenyuk) Date: Thu, 7 Aug 2025 20:14:30 GMT Subject: RFR: 8364129: Rename libwixhelper Message-ID: Rename "libwixhelper" in "libmsica". ------------- Commit messages: - 8364129: Rename libwixhelper Changes: https://git.openjdk.org/jdk/pull/26682/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26682&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8364129 Stats: 11 lines in 5 files changed: 0 ins; 0 del; 11 mod Patch: https://git.openjdk.org/jdk/pull/26682.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26682/head:pull/26682 PR: https://git.openjdk.org/jdk/pull/26682 From erikj at openjdk.org Thu Aug 7 20:21:10 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Thu, 7 Aug 2025 20:21:10 GMT Subject: RFR: 8364129: Rename libwixhelper In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 18:38:10 GMT, Alexey Semenyuk wrote: > Rename "libwixhelper" in "libmsica". Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26682#pullrequestreview-3098606661 From almatvee at openjdk.org Thu Aug 7 20:48:12 2025 From: almatvee at openjdk.org (Alexander Matveev) Date: Thu, 7 Aug 2025 20:48:12 GMT Subject: RFR: 8364129: Rename libwixhelper In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 18:38:10 GMT, Alexey Semenyuk wrote: > Rename "libwixhelper" in "libmsica". src/jdk.jpackage/windows/native/libwixhelper/libmsica.cpp line 1: > 1: /* Should we rename directory name as well? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26682#discussion_r2261362214 From erikj at openjdk.org Thu Aug 7 21:11:12 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Thu, 7 Aug 2025 21:11:12 GMT Subject: RFR: 8364129: Rename libwixhelper In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 20:45:27 GMT, Alexander Matveev wrote: >> Rename "libwixhelper" in "libmsica". > > src/jdk.jpackage/windows/native/libwixhelper/libmsica.cpp line 1: > >> 1: /* > > Should we rename directory name as well? Without renaming the directory, I'm wondering how this could build at all. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26682#discussion_r2261397039 From lmesnik at openjdk.org Thu Aug 7 22:18:43 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Thu, 7 Aug 2025 22:18:43 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v2] In-Reply-To: References: Message-ID: > The fix added JVMTI stress testing mode. > > This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. > > I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. > > The agent has 2 modes now: > - regular that is compatible with most of tests including other jvmti, jdi and jdb tests > - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests > > The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. > Note, that flagless tests are excluded automatically and not executed in this mode. Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: makefiles fixed ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26360/files - new: https://git.openjdk.org/jdk/pull/26360/files/cb9c6457..6d505a8b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=00-01 Stats: 23 lines in 1 file changed: 1 ins; 19 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/26360.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26360/head:pull/26360 PR: https://git.openjdk.org/jdk/pull/26360 From lmesnik at openjdk.org Thu Aug 7 22:18:44 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Thu, 7 Aug 2025 22:18:44 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v2] In-Reply-To: <6i_NUjWgiZ71wdex51k2-J86RrWhOeb7T4Z1qHxq_9g=.3cf3fbeb-6953-4eb7-a988-62bc750136c0@github.com> References: <6i_NUjWgiZ71wdex51k2-J86RrWhOeb7T4Z1qHxq_9g=.3cf3fbeb-6953-4eb7-a988-62bc750136c0@github.com> Message-ID: <1kiR2G4snYm5hhiyTqxz_YmmR0X7-VmLWbnSQuSc_XM=.ec06f4bc-d465-4364-a8d1-f223762e2b84@github.com> On Thu, 7 Aug 2025 13:14:42 GMT, Erik Joelsson wrote: >> Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: >> >> makefiles fixed > > make/RunTests.gmk line 64: > >> 62: >> 63: AGENT_PREFIX := lib >> 64: AGENT_EXT := .so > > We already have `LIBRARY_PREFIX` and `SHARED_LIBRARY_SUFFIX` defined in spec.gmk. To make those available in a test prebuilt scenario, they need to also be defined in RunTestPrebuiltSpec.gmk. Then you can use those instead of defining these. Thanks for suggestion! ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2261561101 From duke at openjdk.org Fri Aug 8 00:43:27 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 00:43:27 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: References: Message-ID: > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 > > linux-aarch64 clang > master real 981.77 user 1645.05 sys 118.60 > JDK-8365053 real 791.96 user 1262.92 sys 101.50 Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: script. update ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26681/files - new: https://git.openjdk.org/jdk/pull/26681/files/a75494f1..d6cd068b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=01-02 Stats: 167 lines in 3 files changed: 167 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/26681.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26681/head:pull/26681 PR: https://git.openjdk.org/jdk/pull/26681 From asemenyuk at openjdk.org Fri Aug 8 01:06:19 2025 From: asemenyuk at openjdk.org (Alexey Semenyuk) Date: Fri, 8 Aug 2025 01:06:19 GMT Subject: RFR: 8364129: Rename libwixhelper In-Reply-To: References: Message-ID: <-BIeyiFMGyJ7ENGH-11vvcurxCU6xidX0qa5QjeNgu8=.384c5cd9-7d84-47ed-970a-c459fe440fd4@github.com> On Thu, 7 Aug 2025 21:08:03 GMT, Erik Joelsson wrote: >> src/jdk.jpackage/windows/native/libwixhelper/libmsica.cpp line 1: >> >>> 1: /* >> >> Should we rename directory name as well? > > Without renaming the directory, I'm wondering how this could build at all. Good catch! ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26682#discussion_r2261727643 From qamai at openjdk.org Fri Aug 8 03:10:12 2025 From: qamai at openjdk.org (Quan Anh Mai) Date: Fri, 8 Aug 2025 03:10:12 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: References: Message-ID: <4T5YaeiJd_xlg_vaHnee8S4jgAoXuZYvq8bCigtLIJk=.0838e9fd-3b8d-47f7-9e99-320917fcfa0e@github.com> On Fri, 8 Aug 2025 00:43:27 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: > > script. update src/utils/PrecompiledHeaders/PrecompiledHeaders.java line 73: > 71: paths.filter(Files::isRegularFile) > 72: .filter(path -> { > 73: String name = path.getFileName().toString(); IIUC this means that we count the number of cpp or hpp files that directly include a file, but should we count the number of cpp file that directly or transitively include a file instead? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2261838083 From dholmes at openjdk.org Fri Aug 8 04:57:16 2025 From: dholmes at openjdk.org (David Holmes) Date: Fri, 8 Aug 2025 04:57:16 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 19:55:35 GMT, Francesco Andreuzzi wrote: > For example, when the threshold is set to 50 I get this compilation error: How can we possibly get a compilation error when everything should build with PCH disabled? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3166572069 From stuefe at openjdk.org Fri Aug 8 05:25:02 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Fri, 8 Aug 2025 05:25:02 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default [v4] In-Reply-To: References: Message-ID: <6NEPqrey2YlmtxSW1WWUVw2rOlmOCr2X28wBJUmkOkk=.0d5e8c3e-479e-457d-a145-cb9b09133553@github.com> > A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. > > The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. > > See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . > > The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. Thomas Stuefe has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains seven commits: - merge - fix comments about closeDescriptors - Feedback Roger - tolerate sigaction failing - Fixes - fix - start+repro-case ------------- Changes: https://git.openjdk.org/jdk/pull/26615/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26615&range=03 Stats: 196 lines in 5 files changed: 195 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26615.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26615/head:pull/26615 PR: https://git.openjdk.org/jdk/pull/26615 From stuefe at openjdk.org Fri Aug 8 05:25:02 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Fri, 8 Aug 2025 05:25:02 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default [v3] In-Reply-To: References: Message-ID: <8ow-rAWzGKO5n8jjb63h28wf-woWRT04Z0L1vI1qWgM=.0ccb6e34-75b6-42b3-aee5-40d1085e5a16@github.com> On Thu, 7 Aug 2025 14:17:32 GMT, Roger Riggs wrote: > It looks like I created a merge conflict by asking to fix these. Another PR https://git.openjdk.org/jdk/pull/26667 is also changing them. (At the time the other PR had not started). The least chaos may be created by backing out those changes from this PR. (Unless you like your words better than PR#26667). Okay, I removed my comments again. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26615#issuecomment-3166614792 From stuefe at openjdk.org Fri Aug 8 05:47:18 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Fri, 8 Aug 2025 05:47:18 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 00:24:10 GMT, Kim Barrett wrote: > How is it that we (Oracle) don't see these gtest death test failures in our CI? I'm guessing others (like SAP - @tstuefe ?) aren't either, since this issue is newly reported while the causing change was made more than 8 months ago. > > The code in gtest-death-test-internal.h#L198-L212 referenced in the PR description is conditionalized on GTEST_HAS_EXCEPTIONS, which leads me to wonder why exceptions are enabled. If not for that, we wouldn't be in that code. > > That led me to wonder why, on Windows, we build libgtest and rebuild libjvm with exceptions enabled, by using -EHsc instead of no -EH option as done for the non-gtest libjvm? > > https://github.com/openjdk/jdk/blame/f95af744b07a9ec87e2507b3d584cbcddc827bbd/make/hotspot/lib/CompileGtest.gmk#L71 https://github.com/openjdk/jdk/blame/f95af744b07a9ec87e2507b3d584cbcddc827bbd/make/hotspot/lib/CompileGtest.gmk#L101 > > That decision seems pretty old, like maybe from the initial introduction of gtest. I haven't tracked down why, or whether the reasons are still valid. I think it would be better to change that, assuming that's possible. > > I was concerned that this might effectively undo JDK-8185734, since the suggestion in JBS was to conditionalize some code on GTEST_HAS_SEH being true. But it looks like the actual change didn't do that. This all sounds very familiar; let me check. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3166646532 From stuefe at openjdk.org Fri Aug 8 06:33:09 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Fri, 8 Aug 2025 06:33:09 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: On Wed, 6 Aug 2025 18:05:24 GMT, Saint Wesonga wrote: > https://github.com/openjdk/jdk/commit/0054bbed7fce5b8566655d6910b09b10c952e609 (from https://bugs.openjdk.org/browse/JDK-8343756) caused the gtest death tests to fail on Windows with the error message "Caught std::exception-derived exception escaping the death test statement. Exception message: unknown file: error: SEH exception with code 0xc0000005 thrown in the test body." The error message is from the catch block in https://github.com/google/googletest/blob/v1.14.0/googletest/include/gtest/internal/gtest-death-test-internal.h#L198-L212 > > In the failing death tests, the gtests start another process and expect the child process to be terminated by JVM error handling code. However, the structured exception handling code in the googletest code ends up getting executed instead. The death tests expect execution to continue after the instruction that triggered the exception by writing to the poissoned page. This change proposes build Windows gtests without structured exception handling to avoid changing the flow of exceptions in OpenJDK test code. The effect of this change is to stop using the [SEH path in the HandleSehExceptionsInMethodIfSupported method](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2603) and [directly start the test](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2612). > > All the Windows gtests now pass with this change. So, we run gtests on Windows with `--gtest_catch_exceptions=0` which disables the inbuilt exception handler. See issues - https://bugs.openjdk.org/browse/JDK-8185734 - https://bugs.openjdk.org/browse/JDK-8267138 (fixed an oversight in 8185734) See more details in my [PR description for 8185734](https://github.com/openjdk/jdk/pull/1757#issue-765285610), that's why this all sounded so familiar. The mechanism in place since 8267138 should be enough for my understanding. @swesonga, can you find out why this is not sufficient in your case? Is this option not passed on to your test? > That led me to wonder why, on Windows, we build libgtest and rebuild libjvm with exceptions enabled, by using -EHsc instead of no -EH option as done for the non-gtest libjvm? In the libjvm code itself, we don't use C++ exceptions, and we catch all Windows SEH with `__try`/`__except`. We also don't want standard stack unwinding with these signals. So no need for `/EHxx`. My assumption is that the gtest framework itself uses C++ exceptions and therefore needs `/EHsc`. The documentation is not super clear on some aspects of this (https://learn.microsoft.com/en-us/cpp/build/reference/eh-exception-handling-model), but it says that for standard C++ exceptions to work `/EHsc` is needed. > I was concerned that this might effectively undo JDK-8185734, since the suggestion in JBS was to conditionalize some code on GTEST_HAS_SEH being true. But it looks like the actual change didn't do that. In my PR for 8184734, I wrote: " In JBS, @kimbarrett suggested to build gtests with GTEST_HAS_SEH switched off to prevent gtest from using SEH. Unfortunately that won't work since the use of death tests means we need SEH. If we switch GTEST_HAS_SEH off, the death tests don't build. I also do not like this suggestion since this configuration may have a higher chance of bitrotting upstream." So it looks this was the first thing I tried back then, and it failed. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3166724727 From kbarrett at openjdk.org Fri Aug 8 06:36:19 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Fri, 8 Aug 2025 06:36:19 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 00:43:27 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: > > script. update Changes requested by kbarrett (Reviewer). src/hotspot/share/precompiled/precompiled.hpp line 29: > 27: > 28: // These header files are included in at least 130 C++ files, as of > 29: // measurements made in August 2025. I don't think there's anything particularly special about the number 130. Another thing to consider when a header file has a high include count is whether it's being overincluded. We've had lots of those, and some folks occasionally try to poke at that problem. Some of the removals here look like they might be a result of such efforts. Still another thing to consider is the cost of inclusion. Some files may just be a lot more expensive to process and benefit more for being precompiled. File size can be an indicator, but there are others. Unfortunately, I don't know of a good way to measure this. src/hotspot/share/precompiled/precompiled.hpp line 70: > 68: #include "utilities/ticks.hpp" > 69: > 70: #ifdef TARGET_COMPILER_visCPP All of the reported testing was on Linux. These were included specifically because measurements said their inclusion here was beneficial. And my recollection from previous discussions is that Visual Studio may be the compiler where precompiled headers are most beneficial. src/utils/PrecompiledHeaders/PrecompiledHeaders.java line 70: > 68: // Count inclusion times for each header > 69: Map occurrences = new HashMap<>(); > 70: try (Stream paths = Files.walk(hotspotPath)) { I think walking the source tree is the wrong approach to gathering the data about include counts. I think better is to do a build and then look at the files /hotspot/variant-server/libjvm/objs/*.d. From that one can build a completely accurate count of the transitive inclusions. ------------- PR Review: https://git.openjdk.org/jdk/pull/26681#pullrequestreview-3099600154 PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2262050884 PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2262055386 PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2262041141 From stuefe at openjdk.org Fri Aug 8 06:44:12 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Fri, 8 Aug 2025 06:44:12 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 06:30:16 GMT, Thomas Stuefe wrote: >> https://github.com/openjdk/jdk/commit/0054bbed7fce5b8566655d6910b09b10c952e609 (from https://bugs.openjdk.org/browse/JDK-8343756) caused the gtest death tests to fail on Windows with the error message "Caught std::exception-derived exception escaping the death test statement. Exception message: unknown file: error: SEH exception with code 0xc0000005 thrown in the test body." The error message is from the catch block in https://github.com/google/googletest/blob/v1.14.0/googletest/include/gtest/internal/gtest-death-test-internal.h#L198-L212 >> >> In the failing death tests, the gtests start another process and expect the child process to be terminated by JVM error handling code. However, the structured exception handling code in the googletest code ends up getting executed instead. The death tests expect execution to continue after the instruction that triggered the exception by writing to the poissoned page. This change proposes build Windows gtests without structured exception handling to avoid changing the flow of exceptions in OpenJDK test code. The effect of this change is to stop using the [SEH path in the HandleSehExceptionsInMethodIfSupported method](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2603) and [directly start the test](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2612). >> >> All the Windows gtests now pass with this change. > > So, we run gtests on Windows with `--gtest_catch_exceptions=0` which disables the inbuilt exception handler. > > See issues > - https://bugs.openjdk.org/browse/JDK-8185734 > - https://bugs.openjdk.org/browse/JDK-8267138 (fixed an oversight in 8185734) > > See more details in my [PR description for 8185734](https://github.com/openjdk/jdk/pull/1757#issue-765285610), that's why this all sounded so familiar. > > The mechanism in place since 8267138 should be enough for my understanding. @swesonga, can you find out why this is not sufficient in your case? Is this option not passed on to your test? > >> That led me to wonder why, on Windows, we build libgtest and rebuild libjvm with exceptions enabled, by using -EHsc instead of no -EH option as done for the non-gtest libjvm? > > In the libjvm code itself, we don't use C++ exceptions, and we catch all Windows SEH with `__try`/`__except`. We also don't want standard stack unwinding with these signals. So no need for `/EHxx`. My assumption is that the gtest framework itself uses C++ exceptions and therefore needs `/EHsc`. The documentation is not super clear on some aspects of this (https://learn.microsoft.com/en-us/cpp/build/reference/eh-exception-handling-model), but it says that for standard C++ exceptions to work `/EHsc` is needed. > >> I was concerned that this might effectively undo JDK-8185734, since the suggestion in JBS was to conditionalize some code on GTEST_HAS_SEH being true. But it looks like the actual change didn't do that. > > In my PR for 8184734, I wrote: > > " In JBS, @kimbarrett suggested to build gtests with GTEST_HAS_SEH switched off to prevent gtest from using SEH. Unfortunately that won't work since the use of death tests means we need SEH. If we switch GTEST_HAS_SEH off, the death tests don't build. I also do not like this suggestion since this configuration may have a higher chance of bitrotting upstream." > > So it looks this was the first thing I tried back then, and it failed. > > How is it that we (Oracle) don't see these gtest death test failures in our CI? I'm guessing others (like SAP - @tstuefe ?) aren't either, since this issue is newly reported while the causing change was made more than 8 months ago. > > Should gtests be enabled in the pre-checkin GitHub actions to prevent regressions? I think they take a few minutes to execute. They are already executed :-) https://github.com/swesonga/jdk/actions/runs/16735029827/job/47374721173 They are launched from the GtestWrapper.java with the `--gtest_catch_exceptions=0` option. That's why it is so strange that this does not work for your case. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3166749667 From duke at openjdk.org Fri Aug 8 08:24:15 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 08:24:15 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: <4T5YaeiJd_xlg_vaHnee8S4jgAoXuZYvq8bCigtLIJk=.0838e9fd-3b8d-47f7-9e99-320917fcfa0e@github.com> References: <4T5YaeiJd_xlg_vaHnee8S4jgAoXuZYvq8bCigtLIJk=.0838e9fd-3b8d-47f7-9e99-320917fcfa0e@github.com> Message-ID: On Fri, 8 Aug 2025 03:07:58 GMT, Quan Anh Mai wrote: >> Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: >> >> script. update > > src/utils/PrecompiledHeaders/PrecompiledHeaders.java line 73: > >> 71: paths.filter(Files::isRegularFile) >> 72: .filter(path -> { >> 73: String name = path.getFileName().toString(); > > IIUC this means that we count the number of cpp or hpp files that directly include a file, but should we count the number of cpp file that directly or transitively include a file instead? That would be a much more sensitive number indeed. I'll look into the solution proposed below by @kimbarrett. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2262278283 From duke at openjdk.org Fri Aug 8 10:30:12 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 10:30:12 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 04:54:32 GMT, David Holmes wrote: > > For example, when the threshold is set to 50 I get this compilation error: > > How can we possibly get a compilation error when everything should build with PCH disabled? Possibly some includes are inside namespaces or classes? I would have to check on this though. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3167372745 From duke at openjdk.org Fri Aug 8 11:27:53 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 11:27:53 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v4] In-Reply-To: References: Message-ID: <9F_mpCqxuTVGhOfdZn2M32xj7XEfOHlHg-m7yQB6c-A=.4ef5971f-fac0-442f-ac1e-ca3f6fefe922@github.com> > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 > > linux-aarch64 clang > master real 981.77 user 1645.05 sys 118.60 > JDK-8365053 real 791.96 user 1262.92 sys 101.50 Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: use .d files ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26681/files - new: https://git.openjdk.org/jdk/pull/26681/files/d6cd068b..5672a1b1 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=02-03 Stats: 55 lines in 2 files changed: 16 ins; 18 del; 21 mod Patch: https://git.openjdk.org/jdk/pull/26681.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26681/head:pull/26681 PR: https://git.openjdk.org/jdk/pull/26681 From duke at openjdk.org Fri Aug 8 11:36:04 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 11:36:04 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v5] In-Reply-To: References: Message-ID: > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 > > linux-aarch64 clang > master real 981.77 user 1645.05 sys 118.60 > JDK-8365053 real 791.96 user 1262.92 sys 101.50 Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: - nl - refresh. not needed ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26681/files - new: https://git.openjdk.org/jdk/pull/26681/files/5672a1b1..5c8179d8 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=03-04 Stats: 416 lines in 2 files changed: 408 ins; 0 del; 8 mod Patch: https://git.openjdk.org/jdk/pull/26681.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26681/head:pull/26681 PR: https://git.openjdk.org/jdk/pull/26681 From duke at openjdk.org Fri Aug 8 11:39:12 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 11:39:12 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: References: Message-ID: <4hk98YWMw1Mf2CTBe2Yb0ZvGXDqoDl2MqMwKvfXbzPM=.09065989-dd8f-4bdc-a2f9-83b13d658173@github.com> On Fri, 8 Aug 2025 06:23:43 GMT, Kim Barrett wrote: >> Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: >> >> script. update > > src/utils/PrecompiledHeaders/PrecompiledHeaders.java line 70: > >> 68: // Count inclusion times for each header >> 69: Map occurrences = new HashMap<>(); >> 70: try (Stream paths = Files.walk(hotspotPath)) { > > I think walking the source tree is the wrong approach to gathering the data > about include counts. I think better is to do a build and then look at the > files /hotspot/variant-server/libjvm/objs/*.d. From that one can build > a completely accurate count of the transitive inclusions. I followed this hint, the latest version of the script checks the `.d` files. Two observations: - The magic number is now `2460` (more includes are taken into account, which makes sense) - There is much less wiggle room, 2461 includes nothing, 2459 includes too much - Runtime does not seem to be affected negatively or positively If anybody is interested, this file contains the inclusion count for each source file: [inclusions_count.txt](https://github.com/user-attachments/files/21682561/inclusions_count.txt) ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2262707516 From kbarrett at openjdk.org Fri Aug 8 12:45:13 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Fri, 8 Aug 2025 12:45:13 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: <4hk98YWMw1Mf2CTBe2Yb0ZvGXDqoDl2MqMwKvfXbzPM=.09065989-dd8f-4bdc-a2f9-83b13d658173@github.com> References: <4hk98YWMw1Mf2CTBe2Yb0ZvGXDqoDl2MqMwKvfXbzPM=.09065989-dd8f-4bdc-a2f9-83b13d658173@github.com> Message-ID: <50Lh-a6pTujiDCyHwPIcC5zzgiu-zP-pAiQeyu4CJcs=.e74b0e74-b87f-45d4-b441-f2d3045fd101@github.com> On Fri, 8 Aug 2025 11:36:04 GMT, Francesco Andreuzzi wrote: >> src/utils/PrecompiledHeaders/PrecompiledHeaders.java line 70: >> >>> 68: // Count inclusion times for each header >>> 69: Map occurrences = new HashMap<>(); >>> 70: try (Stream paths = Files.walk(hotspotPath)) { >> >> I think walking the source tree is the wrong approach to gathering the data >> about include counts. I think better is to do a build and then look at the >> files /hotspot/variant-server/libjvm/objs/*.d. From that one can build >> a completely accurate count of the transitive inclusions. > > I followed this hint, the latest version of the script checks the `.d` files. > > Two observations: > - The magic number is now `2460` (more includes are taken into account, which makes sense) > - There is much less wiggle room, 2461 includes nothing, 2459 includes too much > - Runtime does not seem to be affected negatively or positively > > If anybody is interested, this file contains the inclusion count for each source file: [inclusions_count.txt](https://github.com/user-attachments/files/21682561/inclusions_count.txt) Something seems wrong with these numbers. - There are 538 headers with include counts of 2460. - There are only 1121 .o.cmdline files. So how do we get include counts that are greater (by more than a factor of 2) than the number of .d files? Note that precompiled.hpp has an include count of 2456. There's 1 .d file that depends on everything - BUILD_LIBJVM.d. That probably ought to be excluded from counting, although I guess it should just add one to every file. Also, precompiled.hpp has an include count of 2456, so not the maximum count, but close. Which is itself weird that it wouldn't be the most included file. But it's hard to guess what might be going on with that until the surprising high include count > number of .d files is understood. That include count listing would also be more useful of sorted by count. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2262874254 From asemenyuk at openjdk.org Fri Aug 8 13:01:52 2025 From: asemenyuk at openjdk.org (Alexey Semenyuk) Date: Fri, 8 Aug 2025 13:01:52 GMT Subject: RFR: 8364129: Rename libwixhelper [v2] In-Reply-To: References: Message-ID: > Rename "libwixhelper" in "libmsica". Alexey Semenyuk has updated the pull request incrementally with one additional commit since the last revision: Rename libwixhelper dir ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26682/files - new: https://git.openjdk.org/jdk/pull/26682/files/358c24e6..60b30953 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26682&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26682&range=00-01 Stats: 0 lines in 3 files changed: 0 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/26682.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26682/head:pull/26682 PR: https://git.openjdk.org/jdk/pull/26682 From asemenyuk at openjdk.org Fri Aug 8 13:01:52 2025 From: asemenyuk at openjdk.org (Alexey Semenyuk) Date: Fri, 8 Aug 2025 13:01:52 GMT Subject: RFR: 8364129: Rename libwixhelper [v2] In-Reply-To: <-BIeyiFMGyJ7ENGH-11vvcurxCU6xidX0qa5QjeNgu8=.384c5cd9-7d84-47ed-970a-c459fe440fd4@github.com> References: <-BIeyiFMGyJ7ENGH-11vvcurxCU6xidX0qa5QjeNgu8=.384c5cd9-7d84-47ed-970a-c459fe440fd4@github.com> Message-ID: On Fri, 8 Aug 2025 01:03:58 GMT, Alexey Semenyuk wrote: >> Without renaming the directory, I'm wondering how this could build at all. > > Good catch! > Without renaming the directory, I'm wondering how this could build at all. It did, but fortunately one windows test failed. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26682#discussion_r2262904670 From erikj at openjdk.org Fri Aug 8 13:33:15 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 8 Aug 2025 13:33:15 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v2] In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 22:18:43 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: > > makefiles fixed make/RunTests.gmk line 73: > 71: endif > 72: endif > 73: What happened here? make/RunTests.gmk line 874: > 872: $1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \ > 873: $$(addprefix $$($1_TEST_ROOT)/, ProblemList-jvmti-stress-agent.txt) \ > 874: )) You need to add the definitions of `LIBRARY_PREFIX` and `SHARED_LIBRARY_SUFFIX` for this to work in a remote testing situation. I asked you to not use `{}` but `()` when referencing variables in makefiles. There is no continuation indentation here, please adjust. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2262972522 PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2262984228 From erikj at openjdk.org Fri Aug 8 13:39:12 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 8 Aug 2025 13:39:12 GMT Subject: RFR: 8364129: Rename libwixhelper [v2] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 13:01:52 GMT, Alexey Semenyuk wrote: >> Rename "libwixhelper" in "libmsica". > > Alexey Semenyuk has updated the pull request incrementally with one additional commit since the last revision: > > Rename libwixhelper dir Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26682#pullrequestreview-3100868948 From duke at openjdk.org Fri Aug 8 14:10:15 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 14:10:15 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: <50Lh-a6pTujiDCyHwPIcC5zzgiu-zP-pAiQeyu4CJcs=.e74b0e74-b87f-45d4-b441-f2d3045fd101@github.com> References: <4hk98YWMw1Mf2CTBe2Yb0ZvGXDqoDl2MqMwKvfXbzPM=.09065989-dd8f-4bdc-a2f9-83b13d658173@github.com> <50Lh-a6pTujiDCyHwPIcC5zzgiu-zP-pAiQeyu4CJcs=.e74b0e74-b87f-45d4-b441-f2d3045fd101@github.com> Message-ID: <5kr1ZhhyDjDuI87uSmB-Xh0rzIHq2tgnVTZXWNdHqGs=.e33307ca-794d-4419-a2b5-7ec2f6dd4c95@github.com> On Fri, 8 Aug 2025 12:42:40 GMT, Kim Barrett wrote: > Note that precompiled.hpp has an include count of 2456. There's 1 .d file that depends on everything - BUILD_LIBJVM.d. That probably ought to be excluded from counting, although I guess it should just add one to every file. Apparently `BUILD_LIBJVM.d` mentions all files multiple times: % grep "utilities/waitBarrier.hpp" build/clang/hotspot/variant-server/libjvm/objs/BUILD_LIBJVM.d | wc -l 1231 It's definitely reasonable to exclude it, I did it in the latest revision of the script. Now, the numbers seem more reasonable: % ls build/clang/hotspot/variant-server/libjvm/objs/*.d | grep -v BUILD | wc -l 1232 % grep "code/codeCache.hpp" build/clang/hotspot/variant-server/libjvm/objs/*.d | \ grep -v BUILD | sort | uniq | wc -l 1230 % grep "code/codeCache.hpp" inclusions_count.txt code/codeCache.hpp=1230 Updated [inclusions_count.txt](https://github.com/user-attachments/files/21685761/inclusions_count.txt) ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2263090433 From duke at openjdk.org Fri Aug 8 14:21:37 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 14:21:37 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v6] In-Reply-To: References: Message-ID: > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 > > linux-aarch64 clang > master real 981.77 user 1645.05 sys 118.60 > JDK-8365053 real 791.96 user 1262.92 sys 101.50 Francesco Andreuzzi has updated the pull request incrementally with five additional commits since the last revision: - refresh - refresh - exclude precompiled - nn - exclude BUILD, cpp, compiler specific ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26681/files - new: https://git.openjdk.org/jdk/pull/26681/files/5c8179d8..dba3a6aa Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=05 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=04-05 Stats: 45 lines in 2 files changed: 28 ins; 10 del; 7 mod Patch: https://git.openjdk.org/jdk/pull/26681.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26681/head:pull/26681 PR: https://git.openjdk.org/jdk/pull/26681 From duke at openjdk.org Fri Aug 8 14:36:00 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 14:36:00 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v7] In-Reply-To: References: Message-ID: > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 > > linux-aarch64 clang > master real 981.77 user 1645.05 sys 118.60 > JDK-8365053 real 791.96 user 1262.92 sys 101.50 Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: refresh ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26681/files - new: https://git.openjdk.org/jdk/pull/26681/files/dba3a6aa..3546dd18 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=06 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=05-06 Stats: 20 lines in 1 file changed: 0 ins; 20 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/26681.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26681/head:pull/26681 PR: https://git.openjdk.org/jdk/pull/26681 From duke at openjdk.org Fri Aug 8 14:50:01 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 14:50:01 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v8] In-Reply-To: References: Message-ID: > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 > > linux-aarch64 clang > master real 981.77 user 1645.05 sys 118.60 > JDK-8365053 real 791.96 user 1262.92 sys 101.50 Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: - two times might be too much - ops ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26681/files - new: https://git.openjdk.org/jdk/pull/26681/files/3546dd18..71950aed Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=07 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=06-07 Stats: 6 lines in 2 files changed: 1 ins; 3 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/26681.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26681/head:pull/26681 PR: https://git.openjdk.org/jdk/pull/26681 From qamai at openjdk.org Fri Aug 8 15:05:14 2025 From: qamai at openjdk.org (Quan Anh Mai) Date: Fri, 8 Aug 2025 15:05:14 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: <5kr1ZhhyDjDuI87uSmB-Xh0rzIHq2tgnVTZXWNdHqGs=.e33307ca-794d-4419-a2b5-7ec2f6dd4c95@github.com> References: <4hk98YWMw1Mf2CTBe2Yb0ZvGXDqoDl2MqMwKvfXbzPM=.09065989-dd8f-4bdc-a2f9-83b13d658173@github.com> <50Lh-a6pTujiDCyHwPIcC5zzgiu-zP-pAiQeyu4CJcs=.e74b0e74-b87f-45d4-b441-f2d3045fd101@github.com> <5kr1ZhhyDjDuI87uSmB-Xh0rzIHq2tgnVTZXWNdHqGs=.e33307ca-794d-4419-a2b5-7ec2f6dd4c95@github.com> Message-ID: On Fri, 8 Aug 2025 14:08:02 GMT, Francesco Andreuzzi wrote: >> Something seems wrong with these numbers. >> >> - There are 538 headers with include counts of 2460. >> - There are only 1121 .o.cmdline files. >> >> So how do we get include counts that are greater (by more than a factor of 2) >> than the number of .d files? >> >> Note that precompiled.hpp has an include count of 2456. There's 1 .d file that >> depends on everything - BUILD_LIBJVM.d. That probably ought to be excluded >> from counting, although I guess it should just add one to every file. >> >> Also, precompiled.hpp has an include count of 2456, so not the maximum count, >> but close. Which is itself weird that it wouldn't be the most included file. >> But it's hard to guess what might be going on with that until the surprising >> high include count > number of .d files is understood. >> >> That include count listing would also be more useful of sorted by count. > >> Note that precompiled.hpp has an include count of 2456. There's 1 .d file that > depends on everything - BUILD_LIBJVM.d. That probably ought to be excluded > from counting, although I guess it should just add one to every file. > > Apparently `BUILD_LIBJVM.d` mentions all files multiple times: > > % grep "utilities/waitBarrier.hpp" build/clang/hotspot/variant-server/libjvm/objs/BUILD_LIBJVM.d | wc -l > 1231 > > > It's definitely reasonable to exclude it, I did it in the latest revision of the script. > > Now, the numbers seem more reasonable: > > % ls build/clang/hotspot/variant-server/libjvm/objs/*.d | grep -v BUILD | wc -l > 1232 > > % grep "code/codeCache.hpp" build/clang/hotspot/variant-server/libjvm/objs/*.d | \ > grep -v BUILD | sort | uniq | wc -l > 1230 > > % grep "code/codeCache.hpp" inclusions_count.txt > code/codeCache.hpp=1230 > > > Updated [inclusions_count.txt](https://github.com/user-attachments/files/21685761/inclusions_count.txt) I assume this means that other `.d` files might include a header multiple times, too. Is it reasonable to count only the number of files containing a header instead of number of appearances? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2263225465 From rriggs at openjdk.org Fri Aug 8 15:07:17 2025 From: rriggs at openjdk.org (Roger Riggs) Date: Fri, 8 Aug 2025 15:07:17 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default [v4] In-Reply-To: <6NEPqrey2YlmtxSW1WWUVw2rOlmOCr2X28wBJUmkOkk=.0d5e8c3e-479e-457d-a145-cb9b09133553@github.com> References: <6NEPqrey2YlmtxSW1WWUVw2rOlmOCr2X28wBJUmkOkk=.0d5e8c3e-479e-457d-a145-cb9b09133553@github.com> Message-ID: On Fri, 8 Aug 2025 05:25:02 GMT, Thomas Stuefe wrote: >> A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. >> >> The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. >> >> See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . >> >> The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. > > Thomas Stuefe has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains seven commits: > > - merge > - fix comments about closeDescriptors > - Feedback Roger > - tolerate sigaction failing > - Fixes > - fix > - start+repro-case Looks good, Thanks. ------------- Marked as reviewed by rriggs (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26615#pullrequestreview-3101175850 From duke at openjdk.org Fri Aug 8 15:20:15 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 15:20:15 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: References: <4hk98YWMw1Mf2CTBe2Yb0ZvGXDqoDl2MqMwKvfXbzPM=.09065989-dd8f-4bdc-a2f9-83b13d658173@github.com> <50Lh-a6pTujiDCyHwPIcC5zzgiu-zP-pAiQeyu4CJcs=.e74b0e74-b87f-45d4-b441-f2d3045fd101@github.com> <5kr1ZhhyDjDuI87uSmB-Xh0rzIHq2tgnVTZXWNdHqGs=.e33307ca-794d-4419-a2b5-7ec2f6dd4c95@github.com> Message-ID: On Fri, 8 Aug 2025 15:02:56 GMT, Quan Anh Mai wrote: > I assume this means that other .d files might include a header multiple times, too. >From the following two numbers, I deduce `code/codeCache.hpp` is (transitively) included in 1230 files, with each inclusion coming from a unique `.d` file. Am I missing something? % grep "code/codeCache.hpp" build/clang/hotspot/variant-server/libjvm/objs/*.d | grep -v BUILD | sort | wc -l 1230 % grep "code/codeCache.hpp" build/clang/hotspot/variant-server/libjvm/objs/*.d | grep -v BUILD | sort | uniq | wc -l 1230 I haven't checked every single file, but I'd expect each include to appear at most once in each `.d` file. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2263257970 From stuefe at openjdk.org Fri Aug 8 15:25:15 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Fri, 8 Aug 2025 15:25:15 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default [v3] In-Reply-To: References: Message-ID: <3qqEGFbrUy-TCwnzUT1vPGmbCS8zuIL5iZAn-ylmKeg=.8b43f058-920b-4064-8897-3bad11bbe23c@github.com> On Thu, 7 Aug 2025 14:17:32 GMT, Roger Riggs wrote: >> Thomas Stuefe has updated the pull request incrementally with one additional commit since the last revision: >> >> fix comments about closeDescriptors > > It looks like I created a merge conflict by asking to fix these. > Another PR https://git.openjdk.org/jdk/pull/26667 is also changing them. (At the time the other PR had not started). > The least chaos may be created by backing out those changes from this PR. (Unless you like your words better than PR#26667). Thanks @RogerRiggs and @erikj79 ! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26615#issuecomment-3168292525 From qamai at openjdk.org Fri Aug 8 15:27:13 2025 From: qamai at openjdk.org (Quan Anh Mai) Date: Fri, 8 Aug 2025 15:27:13 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: References: <4hk98YWMw1Mf2CTBe2Yb0ZvGXDqoDl2MqMwKvfXbzPM=.09065989-dd8f-4bdc-a2f9-83b13d658173@github.com> <50Lh-a6pTujiDCyHwPIcC5zzgiu-zP-pAiQeyu4CJcs=.e74b0e74-b87f-45d4-b441-f2d3045fd101@github.com> <5kr1ZhhyDjDuI87uSmB-Xh0rzIHq2tgnVTZXWNdHqGs=.e33307ca-794d-4419-a2b5-7ec2f6dd4c95@github.com> Message-ID: On Fri, 8 Aug 2025 15:17:06 GMT, Francesco Andreuzzi wrote: >> I assume this means that other `.d` files might include a header multiple times, too. Is it reasonable to count only the number of files containing a header instead of number of appearances? > >> I assume this means that other .d files might include a header multiple times, too. > > From the following two numbers, I deduce `code/codeCache.hpp` is (transitively) included in 1230 files, with each inclusion coming from a unique `.d` file. Am I missing something? > > > % grep "code/codeCache.hpp" build/clang/hotspot/variant-server/libjvm/objs/*.d | grep -v BUILD | sort | wc -l > 1230 > > % grep "code/codeCache.hpp" build/clang/hotspot/variant-server/libjvm/objs/*.d | grep -v BUILD | sort | uniq | wc -l > 1230 > > > I haven't checked every single file, but I'd expect each include to appear at most once in each `.d` file. Thanks for the clarification, I think that it is fine, then, although a comment explaining in the code would be great. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2263272948 From rriggs at openjdk.org Fri Aug 8 15:30:17 2025 From: rriggs at openjdk.org (Roger Riggs) Date: Fri, 8 Aug 2025 15:30:17 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default [v4] In-Reply-To: References: Message-ID: On Wed, 6 Aug 2025 12:22:32 GMT, Erik Joelsson wrote: >> Thomas Stuefe has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains seven commits: >> >> - merge >> - fix comments about closeDescriptors >> - Feedback Roger >> - tolerate sigaction failing >> - Fixes >> - fix >> - start+repro-case > > Build changes look trivially good. @erikj79 Please re-review; Thanks ------------- PR Comment: https://git.openjdk.org/jdk/pull/26615#issuecomment-3168308584 From qamai at openjdk.org Fri Aug 8 15:35:15 2025 From: qamai at openjdk.org (Quan Anh Mai) Date: Fri, 8 Aug 2025 15:35:15 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: References: Message-ID: <7fGzfcVu-qJat5d53jOHN6hJmLKT26IKA_Q6Z9LySVc=.8225de02-89b8-4523-9aaf-9a402a2d7730@github.com> On Fri, 8 Aug 2025 06:30:11 GMT, Kim Barrett wrote: >> Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: >> >> script. update > > src/hotspot/share/precompiled/precompiled.hpp line 29: > >> 27: >> 28: // These header files are included in at least 130 C++ files, as of >> 29: // measurements made in August 2025. > > I don't think there's anything particularly special about the number 130. > > Another thing to consider when a header file has a high include count is > whether it's being overincluded. We've had lots of those, and some folks > occasionally try to poke at that problem. Some of the removals here look like > they might be a result of such efforts. > > Still another thing to consider is the cost of inclusion. Some files may just > be a lot more expensive to process and benefit more for being precompiled. > File size can be an indicator, but there are others. Unfortunately, I don't > know of a good way to measure this. You need to modify the comment here, too. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2263274537 From duke at openjdk.org Fri Aug 8 15:35:16 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 15:35:16 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: <7fGzfcVu-qJat5d53jOHN6hJmLKT26IKA_Q6Z9LySVc=.8225de02-89b8-4523-9aaf-9a402a2d7730@github.com> References: <7fGzfcVu-qJat5d53jOHN6hJmLKT26IKA_Q6Z9LySVc=.8225de02-89b8-4523-9aaf-9a402a2d7730@github.com> Message-ID: On Fri, 8 Aug 2025 15:25:15 GMT, Quan Anh Mai wrote: >> src/hotspot/share/precompiled/precompiled.hpp line 29: >> >>> 27: >>> 28: // These header files are included in at least 130 C++ files, as of >>> 29: // measurements made in August 2025. >> >> I don't think there's anything particularly special about the number 130. >> >> Another thing to consider when a header file has a high include count is >> whether it's being overincluded. We've had lots of those, and some folks >> occasionally try to poke at that problem. Some of the removals here look like >> they might be a result of such efforts. >> >> Still another thing to consider is the cost of inclusion. Some files may just >> be a lot more expensive to process and benefit more for being precompiled. >> File size can be an indicator, but there are others. Unfortunately, I don't >> know of a good way to measure this. > > You need to modify the comment here, too. Right, I'll wait just a bit so the discussion on how to approach the problem stabilizes :) ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2263289968 From qamai at openjdk.org Fri Aug 8 15:35:13 2025 From: qamai at openjdk.org (Quan Anh Mai) Date: Fri, 8 Aug 2025 15:35:13 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v8] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 14:50:01 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - two times might be too much > - ops Marked as reviewed by qamai (Committer). src/utils/PrecompiledHeaders/PrecompiledHeaders.java line 85: > 83: try { > 84: // The first line contains the object name > 85: return Files.lines(file).skip(1); Or maybe `return Files.lines(file).skip(1).distinct()`? ------------- PR Review: https://git.openjdk.org/jdk/pull/26681#pullrequestreview-3101235921 PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2263282801 From duke at openjdk.org Fri Aug 8 15:35:17 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 15:35:17 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v8] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 15:28:41 GMT, Quan Anh Mai wrote: >> Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: >> >> - two times might be too much >> - ops > > src/utils/PrecompiledHeaders/PrecompiledHeaders.java line 85: > >> 83: try { >> 84: // The first line contains the object name >> 85: return Files.lines(file).skip(1); > > Or maybe `return Files.lines(file).skip(1).distinct()`? `distinct()` has some overhead, do we need it? Do we expect duplicate headers in a file? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2263292750 From qamai at openjdk.org Fri Aug 8 16:31:15 2025 From: qamai at openjdk.org (Quan Anh Mai) Date: Fri, 8 Aug 2025 16:31:15 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v8] In-Reply-To: References: Message-ID: <57LBOn04BwPwiJdf_UUqgud4h9qhj38ga2bT56akoIc=.6dcf1641-1d82-46a6-b157-1fb7a33b2342@github.com> On Fri, 8 Aug 2025 15:32:32 GMT, Francesco Andreuzzi wrote: >> src/utils/PrecompiledHeaders/PrecompiledHeaders.java line 85: >> >>> 83: try { >>> 84: // The first line contains the object name >>> 85: return Files.lines(file).skip(1); >> >> Or maybe `return Files.lines(file).skip(1).distinct()`? > > `distinct()` has some overhead, do we need it? Do we expect duplicate headers in a file? It's not like stream is the most performant method to do anything anyway. I think the clarification is worth the additional overhead, especially when this file is not run very frequently. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2263469891 From erikj at openjdk.org Fri Aug 8 16:45:14 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 8 Aug 2025 16:45:14 GMT Subject: RFR: 8364611: (process) Child process SIGPIPE signal disposition should be default [v4] In-Reply-To: <6NEPqrey2YlmtxSW1WWUVw2rOlmOCr2X28wBJUmkOkk=.0d5e8c3e-479e-457d-a145-cb9b09133553@github.com> References: <6NEPqrey2YlmtxSW1WWUVw2rOlmOCr2X28wBJUmkOkk=.0d5e8c3e-479e-457d-a145-cb9b09133553@github.com> Message-ID: On Fri, 8 Aug 2025 05:25:02 GMT, Thomas Stuefe wrote: >> A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. >> >> The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. >> >> See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . >> >> The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. > > Thomas Stuefe has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains seven commits: > > - merge > - fix comments about closeDescriptors > - Feedback Roger > - tolerate sigaction failing > - Fixes > - fix > - start+repro-case Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26615#pullrequestreview-3101549262 From erikj at openjdk.org Fri Aug 8 17:34:13 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 8 Aug 2025 17:34:13 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v8] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 14:50:01 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - two times might be too much > - ops The latest version fails for me. I'm guessing because we exclude shenandoah by default for OracleJDK builds so having those headers in precompiled.hpp messes things up. I think we need to be careful with headers that are part of optional features. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3168810638 From dcubed at openjdk.org Fri Aug 8 18:58:12 2025 From: dcubed at openjdk.org (Daniel D. Daugherty) Date: Fri, 8 Aug 2025 18:58:12 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: References: <4hk98YWMw1Mf2CTBe2Yb0ZvGXDqoDl2MqMwKvfXbzPM=.09065989-dd8f-4bdc-a2f9-83b13d658173@github.com> <50Lh-a6pTujiDCyHwPIcC5zzgiu-zP-pAiQeyu4CJcs=.e74b0e74-b87f-45d4-b441-f2d3045fd101@github.com> <5kr1ZhhyDjDuI87uSmB-Xh0rzIHq2tgnVTZXWNdHqGs=.e33307ca-794d-4419-a2b5-7ec2f6dd4c95@github.com> Message-ID: On Fri, 8 Aug 2025 15:24:46 GMT, Quan Anh Mai wrote: >>> I assume this means that other .d files might include a header multiple times, too. >> >> From the following two numbers, I deduce `code/codeCache.hpp` is (transitively) included in 1230 files, with each inclusion coming from a unique `.d` file. Am I missing something? >> >> >> % grep "code/codeCache.hpp" build/clang/hotspot/variant-server/libjvm/objs/*.d | grep -v BUILD | sort | wc -l >> 1230 >> >> % grep "code/codeCache.hpp" build/clang/hotspot/variant-server/libjvm/objs/*.d | grep -v BUILD | sort | uniq | wc -l >> 1230 >> >> >> I haven't checked every single file, but I'd expect each include to appear at most once in each `.d` file. > > Thanks for the clarification, I think that it is fine, then, although a comment explaining in the code would be great. I suspect that the multiple includes reported in the .d files are accurate. The .d file appears to report the number of times we `#include` a file, however, because if the include-guard constructs we use, the content is pulled in only once. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2263788850 From almatvee at openjdk.org Fri Aug 8 21:01:17 2025 From: almatvee at openjdk.org (Alexander Matveev) Date: Fri, 8 Aug 2025 21:01:17 GMT Subject: RFR: 8364129: Rename libwixhelper [v2] In-Reply-To: References: Message-ID: <7x2El6yrGCX6moklfttc-g1-yfTriCod1RM1DrrXt6k=.4e1325b8-ed13-4b2a-b086-e8afb3081f5c@github.com> On Fri, 8 Aug 2025 13:01:52 GMT, Alexey Semenyuk wrote: >> Rename "libwixhelper" in "libmsica". > > Alexey Semenyuk has updated the pull request incrementally with one additional commit since the last revision: > > Rename libwixhelper dir Looks good. ------------- Marked as reviewed by almatvee (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26682#pullrequestreview-3102135060 From duke at openjdk.org Fri Aug 8 21:43:23 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 21:43:23 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v9] In-Reply-To: References: Message-ID: > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 > > linux-aarch64 clang > master real 981.77 user 1645.05 sys 118.60 > JDK-8365053 real 791.96 user 1262.92 sys 101.50 Francesco Andreuzzi has updated the pull request incrementally with one additional commit since the last revision: distinct ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26681/files - new: https://git.openjdk.org/jdk/pull/26681/files/71950aed..3116b39c Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=08 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=07-08 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26681.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26681/head:pull/26681 PR: https://git.openjdk.org/jdk/pull/26681 From duke at openjdk.org Fri Aug 8 21:43:24 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 21:43:24 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v8] In-Reply-To: <57LBOn04BwPwiJdf_UUqgud4h9qhj38ga2bT56akoIc=.6dcf1641-1d82-46a6-b157-1fb7a33b2342@github.com> References: <57LBOn04BwPwiJdf_UUqgud4h9qhj38ga2bT56akoIc=.6dcf1641-1d82-46a6-b157-1fb7a33b2342@github.com> Message-ID: On Fri, 8 Aug 2025 16:28:15 GMT, Quan Anh Mai wrote: >> `distinct()` has some overhead, do we need it? Do we expect duplicate headers in a file? > > It's not like stream is the most performant method to do anything anyway. I think the clarification is worth the additional overhead, especially when this file is not run very frequently. 3116b39c5dc812c1bfb0994bda3a82c9f66870af ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2264028292 From asemenyuk at openjdk.org Fri Aug 8 21:45:15 2025 From: asemenyuk at openjdk.org (Alexey Semenyuk) Date: Fri, 8 Aug 2025 21:45:15 GMT Subject: Integrated: 8364129: Rename libwixhelper In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 18:38:10 GMT, Alexey Semenyuk wrote: > Rename "libwixhelper" in "libmsica". This pull request has now been integrated. Changeset: c1c01556 Author: Alexey Semenyuk URL: https://git.openjdk.org/jdk/commit/c1c0155604cbb6c42a220d391a88b029776bdb95 Stats: 11 lines in 7 files changed: 0 ins; 0 del; 11 mod 8364129: Rename libwixhelper Reviewed-by: erikj, almatvee ------------- PR: https://git.openjdk.org/jdk/pull/26682 From duke at openjdk.org Fri Aug 8 22:11:32 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 22:11:32 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 > > linux-aarch64 clang > master real 981.77 user 1645.05 sys 118.60 > JDK-8365053 real 791.96 user 1262.92 sys 101.50 Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: - magic number: 400 - inline ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26681/files - new: https://git.openjdk.org/jdk/pull/26681/files/3116b39c..be25d341 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=09 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=08-09 Stats: 188 lines in 1 file changed: 0 ins; 176 del; 12 mod Patch: https://git.openjdk.org/jdk/pull/26681.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26681/head:pull/26681 PR: https://git.openjdk.org/jdk/pull/26681 From duke at openjdk.org Fri Aug 8 22:17:12 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 8 Aug 2025 22:17:12 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v8] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 17:31:41 GMT, Erik Joelsson wrote: > The latest version fails for me. I'm guessing because we exclude shenandoah by default for OracleJDK builds so having those headers in precompiled.hpp messes things up. I think we need to be careful with headers that are part of optional features. The last commit (be25d3413b432b56e9789eae55920f1862008911) should fix the problem. I made a build with the following configuration: ./configure \ --with-toolchain-type=clang \ --disable-jvm-feature-shenandoahgc \ --disable-jvm-feature-zero \ --disable-jvm-feature-zgc \ --disable-jvm-feature-g1gc \ --disable-jvm-feature-parallelgc \ --disable-jvm-feature-epsilongc and then I ran the script on this build to extract the [inclusions count](https://github.com/user-attachments/files/21692915/inclusions_count.txt). This could be included in the README file attached to this PR. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3169427612 From lmesnik at openjdk.org Sun Aug 10 06:09:00 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Sun, 10 Aug 2025 06:09:00 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v3] In-Reply-To: References: Message-ID: > The fix added JVMTI stress testing mode. > > This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. > > I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. > > The agent has 2 modes now: > - regular that is compatible with most of tests including other jvmti, jdi and jdb tests > - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests > > The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. > Note, that flagless tests are excluded automatically and not executed in this mode. Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: fixed makefiles ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26360/files - new: https://git.openjdk.org/jdk/pull/26360/files/6d505a8b..49c2a67d Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=01-02 Stats: 28 lines in 2 files changed: 27 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26360.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26360/head:pull/26360 PR: https://git.openjdk.org/jdk/pull/26360 From kbarrett at openjdk.org Mon Aug 11 01:23:18 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Mon, 11 Aug 2025 01:23:18 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: References: <4hk98YWMw1Mf2CTBe2Yb0ZvGXDqoDl2MqMwKvfXbzPM=.09065989-dd8f-4bdc-a2f9-83b13d658173@github.com> <50Lh-a6pTujiDCyHwPIcC5zzgiu-zP-pAiQeyu4CJcs=.e74b0e74-b87f-45d4-b441-f2d3045fd101@github.com> <5kr1ZhhyDjDuI87uSmB-Xh0rzIHq2tgnVTZXWNdHqGs=.e33307ca-794d-4419-a2b5-7ec2f6dd4c95@github.com> Message-ID: On Fri, 8 Aug 2025 18:55:07 GMT, Daniel D. Daugherty wrote: >> Thanks for the clarification, I think that it is fine, then, although a comment explaining in the code would be great. > > I suspect that the multiple includes reported in the .d files are accurate. The .d file appears > to report the number of times we `#include` a file, however, because if the include-guard > constructs we use, the content is pulled in only once. The number of times a header is (directly or indirectly) included by a given source file doesn't affect the number of times that header appears in the .d file associated with that source file. The compiler uniquifies that set (though links might confuse things, but that's not an issue here). The .d files consist of a set of targets, and for each target, the set of dependencies. For the .d files, there's one target, .o, with its dependencies (once each). For BUILD_LIBJVM.d, there's a target for each .o file. And for each of those targets, it's dependencies (once each). Essentially BUILD_LIBJVM.d includes a concatenation of all the .d files. And since there are duplicates among the dependencies of different targets, there are many(!) duplicates in this file. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2265529851 From kbarrett at openjdk.org Mon Aug 11 01:49:20 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Mon, 11 Aug 2025 01:49:20 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 22:11:32 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - magic number: 400 > - inline > > The latest version fails for me. I'm guessing because we exclude shenandoah by default for OracleJDK builds so having those headers in precompiled.hpp messes things up. I think we need to be careful with headers that are part of optional features. > > The last commit ([be25d34](https://github.com/openjdk/jdk/commit/be25d3413b432b56e9789eae55920f1862008911)) should fix the problem. I made a build with the following configuration: > > ``` > ./configure \ > --with-toolchain-type=clang \ > --disable-jvm-feature-shenandoahgc \ > --disable-jvm-feature-zero \ > --disable-jvm-feature-zgc \ > --disable-jvm-feature-g1gc \ > --disable-jvm-feature-parallelgc \ > --disable-jvm-feature-epsilongc > ``` > > and then I ran the script on this build to extract the [inclusions count](https://github.com/user-attachments/files/21692915/inclusions_count.txt). This could be included in the README file attached to this PR. Other optional features include cds, c1, jfr, and jvmci, so files from those directories also ought to be excluded. The (current) list of optional features is here: https://github.com/openjdk/jdk/blame/022e29a77533aacabd56820d00ecffa9646a8362/make/autoconf/jvm-features.m4#L47-L49 cds compiler1 compiler2 dtrace epsilongc g1gc jfr jni-check \ jvmci jvmti link-time-opt management minimal opt-size parallelgc \ serialgc services shenandoahgc vm-structs zero zgc \ Not all of these have their own directories. Even where they do, the feature name and directory name aren't always the same. (The compiler1 feature and the c1 directory being an obvious example.) I didn't spot any files for other optional features in the latest list, other than the ones called out in the first sentence of this comment. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3173072518 From dholmes at openjdk.org Mon Aug 11 06:29:13 2025 From: dholmes at openjdk.org (David Holmes) Date: Mon, 11 Aug 2025 06:29:13 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: <-jY8BYznUPdJuRtoV-JSSDwa96qtMRN3BqOlms5Mkuk=.83b456e1-074b-462f-b621-9a2ea57495ad@github.com> On Mon, 11 Aug 2025 01:46:43 GMT, Kim Barrett wrote: > Other optional features include cds, c1, jfr, and jvmci, so files from those directories also ought to be excluded. Can't these just be conditionalized with an INCLUDE_xxx check instead of being excluded? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3173410334 From ihse at openjdk.org Mon Aug 11 08:02:20 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 08:02:20 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: <-U8KN5uNIUhrTn2MCESloqat2y6ZFvgxK-bsmqIDFFI=.ab50a73b-80bd-49ec-aac9-b633cc92b915@github.com> On Fri, 8 Aug 2025 22:11:32 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - magic number: 400 > - inline There is a handy shortcut for creating a build with all optional features disabled, `--with-jvm-variants=custom`. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3173648190 From kbarrett at openjdk.org Mon Aug 11 08:02:20 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Mon, 11 Aug 2025 08:02:20 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: <-jY8BYznUPdJuRtoV-JSSDwa96qtMRN3BqOlms5Mkuk=.83b456e1-074b-462f-b621-9a2ea57495ad@github.com> References: <-jY8BYznUPdJuRtoV-JSSDwa96qtMRN3BqOlms5Mkuk=.83b456e1-074b-462f-b621-9a2ea57495ad@github.com> Message-ID: On Mon, 11 Aug 2025 06:26:04 GMT, David Holmes wrote: > > Other optional features include cds, c1, jfr, and jvmci, so files from those directories also ought to be excluded. > > Can't these just be conditionalized with an INCLUDE_xxx check instead of being excluded? Yeah, that might be better than excluding altogether. But still need to figure out which files to (conditionally) exclude. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3173654009 From ihse at openjdk.org Mon Aug 11 08:02:21 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 08:02:21 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 06:32:57 GMT, Kim Barrett wrote: >> Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: >> >> - magic number: 400 >> - inline > > src/hotspot/share/precompiled/precompiled.hpp line 70: > >> 68: #include "utilities/ticks.hpp" >> 69: >> 70: #ifdef TARGET_COMPILER_visCPP > > All of the reported testing was on Linux. These were included specifically because measurements > said their inclusion here was beneficial. And my recollection from previous discussions is that > Visual Studio may be the compiler where precompiled headers are most beneficial. Indeed, Visual Studio is the place where PCH is most needed. I see Erik says he tested on Windows with no difference. While he concluded that this means no regression, I see it as a missed opportunity. Giving the Windows platform a bit of extra love can probably increase compilation speed where it is needed the most. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2265948776 From ihse at openjdk.org Mon Aug 11 08:09:15 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 08:09:15 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency In-Reply-To: References: Message-ID: On Thu, 7 Aug 2025 19:55:35 GMT, Francesco Andreuzzi wrote: > Also, maybe check in the generation script as well? I think a subfolder here would be fine: https://github.com/openjdk/jdk/tree/master/src/utils. @shipilev I'm not sure this is a proper place. The other tools in `src/utils` are stand-alone utilities that could be useful to end users, like hsdis and IdealGraphVisualizer. In contrast, tools that are useful for developers are put either into `bin` or `make/scripts`. Normally, I think `bin` is what would make most sense, and the latter is mostly a legacy result of people using `make` as a `misc` back in the bad old hg-forest days, but in this particular case I think it might be the best placement. This is after all clearly about optimizing the build speed. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3173680429 From ihse at openjdk.org Mon Aug 11 08:13:12 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 08:13:12 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: <-jY8BYznUPdJuRtoV-JSSDwa96qtMRN3BqOlms5Mkuk=.83b456e1-074b-462f-b621-9a2ea57495ad@github.com> Message-ID: On Mon, 11 Aug 2025 07:59:02 GMT, Kim Barrett wrote: > But still need to figure out which files to (conditionally) exclude. Maybe first make a baseline build with no optional features, and analyze the result with this tool. And then enable each individual feature, re-build and re-analyze, and see how it differs. If a file then makes it to the PCH list, it is useful when enabling that feature, and it is potentially only correct to include with that feature enabled, so it could be added with an include guard. That will require a bit more manual work (unless this process too can be automated), but it will probably give the best results. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3173692668 From ihse at openjdk.org Mon Aug 11 08:21:22 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 08:21:22 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v3] In-Reply-To: References: <7fGzfcVu-qJat5d53jOHN6hJmLKT26IKA_Q6Z9LySVc=.8225de02-89b8-4523-9aaf-9a402a2d7730@github.com> Message-ID: On Fri, 8 Aug 2025 15:31:18 GMT, Francesco Andreuzzi wrote: >> You need to modify the comment here, too. > > Right, I'll wait just a bit so the discussion on how to approach the problem stabilizes :) This number is based on my original experimentation. If I tried to lower the bar by lowering the number, the PCH list grew too much and it made for a worse performance. And contrary, if I raised the number, fewer files where included which made the PCH quicker to process but less helpful. That number was the optimum I found. It seems from https://bugs.openjdk.org/browse/JDK-8365053 that this is still around the optimum. However, rather than just mentioning the number in the comment, the rationale could be specified, like `the optimum number of includes`. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26681#discussion_r2265991618 From ihse at openjdk.org Mon Aug 11 08:41:12 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 08:41:12 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: <0fo80CHLoG2GkcIxyxaLmKF0Zy2SbbYf11d_An86FIQ=.2fd29302-0890-4aaa-bd8f-94c585ad5b95@github.com> On Wed, 6 Aug 2025 18:05:24 GMT, Saint Wesonga wrote: > https://github.com/openjdk/jdk/commit/0054bbed7fce5b8566655d6910b09b10c952e609 (from https://bugs.openjdk.org/browse/JDK-8343756) caused the gtest death tests to fail on Windows with the error message "Caught std::exception-derived exception escaping the death test statement. Exception message: unknown file: error: SEH exception with code 0xc0000005 thrown in the test body." The error message is from the catch block in https://github.com/google/googletest/blob/v1.14.0/googletest/include/gtest/internal/gtest-death-test-internal.h#L198-L212 > > In the failing death tests, the gtests start another process and expect the child process to be terminated by JVM error handling code. However, the structured exception handling code in the googletest code ends up getting executed instead. The death tests expect execution to continue after the instruction that triggered the exception by writing to the poissoned page. This change proposes build Windows gtests without structured exception handling to avoid changing the flow of exceptions in OpenJDK test code. The effect of this change is to stop using the [SEH path in the HandleSehExceptionsInMethodIfSupported method](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2603) and [directly start the test](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2612). > > All the Windows gtests now pass with this change. > That led me to wonder why, on Windows, we build libgtest and rebuild libjvm with exceptions enabled, by using -EHsc instead of no -EH option as done for the non-gtest libjvm? > > That decision seems pretty old, like maybe from the initial introduction of gtest. I haven't tracked down why, or whether the reasons are still valid. I think it would be better to change that, assuming that's possible. Your assumption is correct. This is from the initial JDK-8148244. I don't know if there is any rationale, or if this was just added by following gtest documentation. I guess it can be removed. I'm starting a test run of hs-tier1 without it right now, but I'm not sure if that is enough to provoke any potential problems. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3173771307 From duke at openjdk.org Mon Aug 11 08:59:16 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Mon, 11 Aug 2025 08:59:16 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: <-jY8BYznUPdJuRtoV-JSSDwa96qtMRN3BqOlms5Mkuk=.83b456e1-074b-462f-b621-9a2ea57495ad@github.com> Message-ID: <0DhdCTNjwi_HGzvp9ybEEikGSHvqSvWTBP4PIIbdzEI=.7bbfa37f-be55-4925-9cc9-40850ba1f54c@github.com> On Mon, 11 Aug 2025 08:10:09 GMT, Magnus Ihse Bursie wrote: > > But still need to figure out which files to (conditionally) exclude. > > Maybe first make a baseline build with no optional features, and analyze the result with this tool. And then enable each individual feature, re-build and re-analyze, and see how it differs. If a file then makes it to the PCH list, it is useful when enabling that feature, and it is potentially only correct to include with that feature enabled, so it could be added with an include guard. > > That will require a bit more manual work (unless this process too can be automated), but it will probably give the best results. Hi @magicus, thanks for the hint. I'll give it a shot and post the results here! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3173824367 From ihse at openjdk.org Mon Aug 11 09:00:11 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 09:00:11 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: <2fhrymDxQIwpibGo5SC_-Y_4VxXC5Omsnj_GAbETK3A=.26b513c0-1c1f-460e-99e5-33d6548fdc83@github.com> On Wed, 6 Aug 2025 18:05:24 GMT, Saint Wesonga wrote: > https://github.com/openjdk/jdk/commit/0054bbed7fce5b8566655d6910b09b10c952e609 (from https://bugs.openjdk.org/browse/JDK-8343756) caused the gtest death tests to fail on Windows with the error message "Caught std::exception-derived exception escaping the death test statement. Exception message: unknown file: error: SEH exception with code 0xc0000005 thrown in the test body." The error message is from the catch block in https://github.com/google/googletest/blob/v1.14.0/googletest/include/gtest/internal/gtest-death-test-internal.h#L198-L212 > > In the failing death tests, the gtests start another process and expect the child process to be terminated by JVM error handling code. However, the structured exception handling code in the googletest code ends up getting executed instead. The death tests expect execution to continue after the instruction that triggered the exception by writing to the poissoned page. This change proposes build Windows gtests without structured exception handling to avoid changing the flow of exceptions in OpenJDK test code. The effect of this change is to stop using the [SEH path in the HandleSehExceptionsInMethodIfSupported method](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2603) and [directly start the test](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2612). > > All the Windows gtests now pass with this change. Well that did not work: warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc ``` when compiling `googletest-1.14.0/googlemock/src/gmock-spec-builders.cc`. I'm not sure really of the effect of including, or not including, `/EHsc` when building gtest. An alternative is to disable C4530; I can try that as well. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3173825277 From ihse at openjdk.org Mon Aug 11 09:22:17 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 09:22:17 GMT Subject: RFR: 8362885: A more formal way to mark javac's Flags that belong to a specific Symbol type only [v3] In-Reply-To: References: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> Message-ID: On Mon, 28 Jul 2025 06:50:47 GMT, Jan Lahoda wrote: >> This PR proposes to improve handling of javac's `Flags` in two ways: >> - for each flag, there's now an informational annotation specifying what is the target Symbol type. Only targets right now are `TypeSymbol`s, `MethodSymbol`s and `VarSymbol`s. If we ran out of flags for `TypeSymbol`s, we could split those to module/package/class/type variable, but it does not seem to be quite necessary yet. There's an auxiliary special `BLOCK`, which is for `JCBlock`. >> - the manually handled `Flags.Flag` enum is replaced with autogenerated `FlagsEnum` >> >> This is inspired by: >> https://github.com/openjdk/jdk/pull/26181#pullrequestreview-2997428662 >> >> There may be some better to handle `Flags` eventually, but this hopefully improves the current situation at least somewhat, by providing more formal way to say the flags' target, and restricting the need to read comments and search for free flags. >> >> As a side-effect of this annotation, the `test/langtools/tools/javac/flags/FlagsTest.java` now also prints which flags are free, for each Symbol type. >> >> (I will remove the `build` label for now, until discussion on javac level is done, and will re-add it if we decide the goal to autogenerate the FlagsEnum makes sense.) > > Jan Lahoda has updated the pull request incrementally with one additional commit since the last revision: > > Reverting runtime checks, as suggested. make/modules/jdk.compiler/Gensrc.gmk line 82: > 80: ################################################################################ > 81: # > 82: # Generate FlagsEnum from Flags constants: Suggestion: # Generate FlagsEnum from Flags constants ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26452#discussion_r2266118863 From ihse at openjdk.org Mon Aug 11 09:30:16 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 09:30:16 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v3] In-Reply-To: References: Message-ID: On Sun, 10 Aug 2025 06:09:00 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: > > fixed makefiles make/RunTests.gmk line 882: > 880: ifneq ($$(JTREG_JVMTI_STRESS_AGENT), ) > 881: AGENT := $$(LIBRARY_PREFIX)JvmtiStressAgent$$(SHARED_LIBRARY_SUFFIX)=$$(JTREG_JVMTI_STRESS_AGENT) > 882: $1_JTREG_BASIC_OPTIONS += -javaoption:'-agentpath:${TEST_IMAGE_DIR}/hotspot/jtreg/native/$${AGENT}' Suggestion: $1_JTREG_BASIC_OPTIONS += -javaoption:'-agentpath:$(TEST_IMAGE_DIR)/hotspot/jtreg/native/$$(AGENT)' make/RunTests.gmk line 885: > 883: $1_JTREG_BASIC_OPTIONS += $$(addprefix $$(JTREG_PROBLEM_LIST_PREFIX), $$(wildcard \ > 884: $$(addprefix $$($1_TEST_ROOT)/, ProblemList-jvmti-stress-agent.txt) \ > 885: )) Suggestion: $$(addprefix $$($1_TEST_ROOT)/, ProblemList-jvmti-stress-agent.txt) \ )) Also, the comment on line length applies here. test/lib/jdk/test/lib/jvmti/libJvmtiStressAgent.cpp line 38: > 36: * Test supports 2 modes: > 37: * - standard, where the agent doesn't require debugging capabilities > 38: * - debug, where the agent additionally test debug-related functionality Suggestion: * - debug, where the agent additionally test debug-related functionality test/lib/jdk/test/lib/jvmti/libJvmtiStressAgent.cpp line 40: > 38: * - debug, where the agent additionally test debug-related functionality > 39: * The debug mode is incompatible with debugger tests and debug jvmti tests. > 40: * The standard mode should be compatible with all tests except probelmlisted. Suggestion: * The standard mode should be compatible with all tests except problemlisted. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2266130714 PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2266133869 PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2266137865 PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2266138425 From ihse at openjdk.org Mon Aug 11 09:30:17 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 09:30:17 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v3] In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 09:24:27 GMT, Magnus Ihse Bursie wrote: >> Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: >> >> fixed makefiles > > make/RunTests.gmk line 882: > >> 880: ifneq ($$(JTREG_JVMTI_STRESS_AGENT), ) >> 881: AGENT := $$(LIBRARY_PREFIX)JvmtiStressAgent$$(SHARED_LIBRARY_SUFFIX)=$$(JTREG_JVMTI_STRESS_AGENT) >> 882: $1_JTREG_BASIC_OPTIONS += -javaoption:'-agentpath:${TEST_IMAGE_DIR}/hotspot/jtreg/native/$${AGENT}' > > Suggestion: > > $1_JTREG_BASIC_OPTIONS += -javaoption:'-agentpath:$(TEST_IMAGE_DIR)/hotspot/jtreg/native/$$(AGENT)' Also, this line looks quite long. Can you check that it does not pass 80 characters? (Can't tell on github reviews...) ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2266132846 From ihse at openjdk.org Mon Aug 11 09:38:12 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 09:38:12 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v3] In-Reply-To: References: Message-ID: <6BPt_Y_57yRWLC6iksvVGg3SkPKM98UAasfCcrAPFeo=.99d5dd24-39b4-4935-89c0-ff17aecd4b20@github.com> On Sun, 10 Aug 2025 06:09:00 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: > > fixed makefiles make/RunTests.gmk line 881: > 879: > 880: ifneq ($$(JTREG_JVMTI_STRESS_AGENT), ) > 881: AGENT := $$(LIBRARY_PREFIX)JvmtiStressAgent$$(SHARED_LIBRARY_SUFFIX)=$$(JTREG_JVMTI_STRESS_AGENT) I don't understand the usage scenario here. Are you supposed to run this like `make test JTREG=JVMTI_STRESS_AGENT=true`? If so, this will result in `-javaoption:'-agentpath:/hotspot/jtreg/native/libJvmtiStressAgent.so=true` being sent to jtreg, and that looks sus. Or how should this be used? In fact, this option should be described in testing.md. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2266155034 From ihse at openjdk.org Mon Aug 11 09:39:21 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 09:39:21 GMT Subject: RFR: 8361950: Update to use jtreg 8 In-Reply-To: References: Message-ID: On Fri, 11 Jul 2025 09:05:40 GMT, Christian Stein wrote: > Please review the change to update to using jtreg 8. > > The primary change is to the `jib-profiles.js` file, which specifies the version of jtreg to use, for those systems that rely on this file. In addition, the requiredVersion has been updated in the various `TEST.ROOT` files. Marked as reviewed by ihse (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26261#pullrequestreview-3104868381 From jlahoda at openjdk.org Mon Aug 11 09:43:36 2025 From: jlahoda at openjdk.org (Jan Lahoda) Date: Mon, 11 Aug 2025 09:43:36 GMT Subject: RFR: 8362885: A more formal way to mark javac's Flags that belong to a specific Symbol type only [v4] In-Reply-To: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> References: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> Message-ID: <2N2f71azV7x8Cn2gSeFUrOkNomSD7mIDqGcxcd53C00=.d819e69b-0950-4a50-b1ad-eed88df5251e@github.com> > This PR proposes to improve handling of javac's `Flags` in two ways: > - for each flag, there's now an informational annotation specifying what is the target Symbol type. Only targets right now are `TypeSymbol`s, `MethodSymbol`s and `VarSymbol`s. If we ran out of flags for `TypeSymbol`s, we could split those to module/package/class/type variable, but it does not seem to be quite necessary yet. There's an auxiliary special `BLOCK`, which is for `JCBlock`. > - the manually handled `Flags.Flag` enum is replaced with autogenerated `FlagsEnum` > > This is inspired by: > https://github.com/openjdk/jdk/pull/26181#pullrequestreview-2997428662 > > There may be some better to handle `Flags` eventually, but this hopefully improves the current situation at least somewhat, by providing more formal way to say the flags' target, and restricting the need to read comments and search for free flags. > > As a side-effect of this annotation, the `test/langtools/tools/javac/flags/FlagsTest.java` now also prints which flags are free, for each Symbol type. > > (I will remove the `build` label for now, until discussion on javac level is done, and will re-add it if we decide the goal to autogenerate the FlagsEnum makes sense.) Jan Lahoda has updated the pull request incrementally with one additional commit since the last revision: Update make/modules/jdk.compiler/Gensrc.gmk as suggested. Co-authored-by: Magnus Ihse Bursie ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26452/files - new: https://git.openjdk.org/jdk/pull/26452/files/f1d6def8..019d0061 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26452&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26452&range=02-03 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26452.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26452/head:pull/26452 PR: https://git.openjdk.org/jdk/pull/26452 From jlahoda at openjdk.org Mon Aug 11 09:43:36 2025 From: jlahoda at openjdk.org (Jan Lahoda) Date: Mon, 11 Aug 2025 09:43:36 GMT Subject: RFR: 8362885: A more formal way to mark javac's Flags that belong to a specific Symbol type only [v3] In-Reply-To: References: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> Message-ID: <1Hf1LjcgBDhCfj8Y6pvfRZXuEEpiBbUMNpvDLZ5_P9c=.135b2884-ea85-471e-816f-330e22f233cb@github.com> On Mon, 28 Jul 2025 21:10:24 GMT, Chen Liang wrote: >> Jan Lahoda has updated the pull request incrementally with one additional commit since the last revision: >> >> Reverting runtime checks, as suggested. > > make/langtools/tools/flagsgenerator/FlagsGenerator.java line 84: > >> 82: .forEach(target -> target2FlagBit2Fields.computeIfAbsent(target, _ -> new HashMap<>()) >> 83: .computeIfAbsent(flagBit, _ -> new ArrayList<>()) >> 84: .add(flagName)); > > Instead of a dedicated loop to verify no overlaps, we can make the nested map `Map` and fail fast whenever we detect a conflict, like: > > var oldFlagName = target2FlagBit2Fields.computeIfAbsent(target, _ -> new HashMap<>()).put(flagBit, flagName); > if (oldFlagName != null) { > // Fail fast code > } > > I personally don't see a reason to collect all conflicting fields for a flag if any of these conflicts already causes a failure. Its unlikely to be common in the long run, but there may be conflicts among more than two fields. Reporting all at once (rather than reporting one conflict, and after resolving reporting another) seems nicer. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26452#discussion_r2266167613 From ihse at openjdk.org Mon Aug 11 09:45:17 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 09:45:17 GMT Subject: RFR: 8357979: Compile jdk.internal.vm.ci targeting the Boot JDK version In-Reply-To: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> References: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> Message-ID: On Tue, 1 Jul 2025 14:11:32 GMT, Magnus Ihse Bursie wrote: > From the bug description: > > There are plans to build libgraal in JDK master using a version of Native Image running on a JDK one version behind JDK master. This Native Image execution needs to be able to load the JVMCI classes as they are built into the libgraal image. As such, the JVMCI classes must have a class file major version of N-1 where N is the major class file version of JDK master. > > This PR is basically the same change as published by Doug in https://github.com/openjdk/jdk/pull/25494, but it contains some cleanup and adds and uses the `TARGET_RELEASE` argument that Doug correctly realized was needed. @dougxc @erikj79 Can you please review this? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26069#issuecomment-3173975603 From ihse at openjdk.org Mon Aug 11 09:48:16 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 09:48:16 GMT Subject: Integrated: 8361142: Improve custom hooks for makefiles In-Reply-To: <91cuhK8a2VHENkKujTT5Q7CYxYjnK8qV3jULeLXi9jU=.d12fe818-ca41-4448-8a8f-120c60a219d7@github.com> References: <91cuhK8a2VHENkKujTT5Q7CYxYjnK8qV3jULeLXi9jU=.d12fe818-ca41-4448-8a8f-120c60a219d7@github.com> Message-ID: On Tue, 1 Jul 2025 07:46:12 GMT, Magnus Ihse Bursie wrote: > Add some additional and more fine-grained way in which custom makefiles can be integrated. This pull request has now been integrated. Changeset: 1fc0b016 Author: Magnus Ihse Bursie URL: https://git.openjdk.org/jdk/commit/1fc0b01601af454a0e871afce8ae0c9da1358f13 Stats: 38 lines in 8 files changed: 24 ins; 0 del; 14 mod 8361142: Improve custom hooks for makefiles Reviewed-by: erikj ------------- PR: https://git.openjdk.org/jdk/pull/26060 From ihse at openjdk.org Mon Aug 11 09:52:13 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 09:52:13 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: <2fhrymDxQIwpibGo5SC_-Y_4VxXC5Omsnj_GAbETK3A=.26b513c0-1c1f-460e-99e5-33d6548fdc83@github.com> References: <2fhrymDxQIwpibGo5SC_-Y_4VxXC5Omsnj_GAbETK3A=.26b513c0-1c1f-460e-99e5-33d6548fdc83@github.com> Message-ID: On Mon, 11 Aug 2025 08:57:10 GMT, Magnus Ihse Bursie wrote: > An alternative is to disable C4530; I can try that as well. Well, that built and tested successfully at least. I've opened [JDK-8365231](https://bugs.openjdk.org/browse/JDK-8365231), so we can continue further discussion about that change separate from this PR. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3173995064 From jlahoda at openjdk.org Mon Aug 11 09:57:03 2025 From: jlahoda at openjdk.org (Jan Lahoda) Date: Mon, 11 Aug 2025 09:57:03 GMT Subject: RFR: 8362885: A more formal way to mark javac's Flags that belong to a specific Symbol type only [v5] In-Reply-To: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> References: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> Message-ID: > This PR proposes to improve handling of javac's `Flags` in two ways: > - for each flag, there's now an informational annotation specifying what is the target Symbol type. Only targets right now are `TypeSymbol`s, `MethodSymbol`s and `VarSymbol`s. If we ran out of flags for `TypeSymbol`s, we could split those to module/package/class/type variable, but it does not seem to be quite necessary yet. There's an auxiliary special `BLOCK`, which is for `JCBlock`. > - the manually handled `Flags.Flag` enum is replaced with autogenerated `FlagsEnum` > > This is inspired by: > https://github.com/openjdk/jdk/pull/26181#pullrequestreview-2997428662 > > There may be some better to handle `Flags` eventually, but this hopefully improves the current situation at least somewhat, by providing more formal way to say the flags' target, and restricting the need to read comments and search for free flags. > > As a side-effect of this annotation, the `test/langtools/tools/javac/flags/FlagsTest.java` now also prints which flags are free, for each Symbol type. > > (I will remove the `build` label for now, until discussion on javac level is done, and will re-add it if we decide the goal to autogenerate the FlagsEnum makes sense.) Jan Lahoda has updated the pull request incrementally with three additional commits since the last revision: - Merge remote-tracking branch 'origin/JDK-8362885' into JDK-8362885 - Using EnumMap, as suggested. - Removing unnecessary delimited, as suggested. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26452/files - new: https://git.openjdk.org/jdk/pull/26452/files/019d0061..2095f574 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26452&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26452&range=03-04 Stats: 4 lines in 2 files changed: 1 ins; 2 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26452.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26452/head:pull/26452 PR: https://git.openjdk.org/jdk/pull/26452 From dnsimon at openjdk.org Mon Aug 11 09:59:11 2025 From: dnsimon at openjdk.org (Doug Simon) Date: Mon, 11 Aug 2025 09:59:11 GMT Subject: RFR: 8357979: Compile jdk.internal.vm.ci targeting the Boot JDK version In-Reply-To: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> References: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> Message-ID: On Tue, 1 Jul 2025 14:11:32 GMT, Magnus Ihse Bursie wrote: > From the bug description: > > There are plans to build libgraal in JDK master using a version of Native Image running on a JDK one version behind JDK master. This Native Image execution needs to be able to load the JVMCI classes as they are built into the libgraal image. As such, the JVMCI classes must have a class file major version of N-1 where N is the major class file version of JDK master. > > This PR is basically the same change as published by Doug in https://github.com/openjdk/jdk/pull/25494, but it contains some cleanup and adds and uses the `TARGET_RELEASE` argument that Doug correctly realized was needed. LGTM. Marked as reviewed by dnsimon (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26069#pullrequestreview-3104984155 PR Review: https://git.openjdk.org/jdk/pull/26069#pullrequestreview-3104984887 From ihse at openjdk.org Mon Aug 11 10:02:25 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 10:02:25 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc Message-ID: According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. ------------- Commit messages: - 8365231: Don't build gtest with /EHsc Changes: https://git.openjdk.org/jdk/pull/26721/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26721&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8365231 Stats: 4 lines in 1 file changed: 1 ins; 2 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26721.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26721/head:pull/26721 PR: https://git.openjdk.org/jdk/pull/26721 From duke at openjdk.org Mon Aug 11 11:03:21 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Mon, 11 Aug 2025 11:03:21 GMT Subject: RFR: 8365238: 'jfr' feature requires 'services' with 'custom' build variant Message-ID: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> In this PR I add an `autoconfigure` check to make sure that `jfr` is not built without the feature `services`, which would lead to the following error: /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp: In member function ?virtual void VM_GC_SendObjectCountEvent::doit()?: /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:402:5: error: ?ObjectCountEventSender? has not been declared 402 | ObjectCountEventSender::enable_requestable_event(); | ^~~~~~~~~~~~~~~~~~~~~~ /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:404:5: error: ?ObjectCountEventSender? has not been declared 404 | ObjectCountEventSender::disable_requestable_event(); | ^~~~~~~~~~~~~~~~~~~~~~ To reproduce: sh configure --with-jvm-variants=custom --with-conf-name=cstm --enable-jvm-feature-jfr --enable-jvm-feature-serialgc make -j hotspot CONF_NAME=cstm ------------- Commit messages: - add check Changes: https://git.openjdk.org/jdk/pull/26723/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26723&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8365238 Stats: 4 lines in 1 file changed: 4 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/26723.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26723/head:pull/26723 PR: https://git.openjdk.org/jdk/pull/26723 From ihse at openjdk.org Mon Aug 11 11:34:16 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 11:34:16 GMT Subject: RFR: 8362885: A more formal way to mark javac's Flags that belong to a specific Symbol type only [v5] In-Reply-To: References: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> Message-ID: On Mon, 11 Aug 2025 09:57:03 GMT, Jan Lahoda wrote: >> This PR proposes to improve handling of javac's `Flags` in two ways: >> - for each flag, there's now an informational annotation specifying what is the target Symbol type. Only targets right now are `TypeSymbol`s, `MethodSymbol`s and `VarSymbol`s. If we ran out of flags for `TypeSymbol`s, we could split those to module/package/class/type variable, but it does not seem to be quite necessary yet. There's an auxiliary special `BLOCK`, which is for `JCBlock`. >> - the manually handled `Flags.Flag` enum is replaced with autogenerated `FlagsEnum` >> >> This is inspired by: >> https://github.com/openjdk/jdk/pull/26181#pullrequestreview-2997428662 >> >> There may be some better to handle `Flags` eventually, but this hopefully improves the current situation at least somewhat, by providing more formal way to say the flags' target, and restricting the need to read comments and search for free flags. >> >> As a side-effect of this annotation, the `test/langtools/tools/javac/flags/FlagsTest.java` now also prints which flags are free, for each Symbol type. >> >> (I will remove the `build` label for now, until discussion on javac level is done, and will re-add it if we decide the goal to autogenerate the FlagsEnum makes sense.) > > Jan Lahoda has updated the pull request incrementally with three additional commits since the last revision: > > - Merge remote-tracking branch 'origin/JDK-8362885' into JDK-8362885 > - Using EnumMap, as suggested. > - Removing unnecessary delimited, as suggested. Build changes look fine now ------------- Marked as reviewed by ihse (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26452#pullrequestreview-3105399551 From cstein at openjdk.org Mon Aug 11 11:35:12 2025 From: cstein at openjdk.org (Christian Stein) Date: Mon, 11 Aug 2025 11:35:12 GMT Subject: RFR: 8361950: Update to use jtreg 8 [v2] In-Reply-To: References: Message-ID: > Please review the change to update to using jtreg 8. > > The primary change is to the `jib-profiles.js` file, which specifies the version of jtreg to use, for those systems that rely on this file. In addition, the requiredVersion has been updated in the various `TEST.ROOT` files. Christian Stein has updated the pull request incrementally with one additional commit since the last revision: Update to use correct library directories See also: https://openjdk.org/jtreg/faq.html#how-do-i-find-the-path-for-the-testng-or-junit-jar-files ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26261/files - new: https://git.openjdk.org/jdk/pull/26261/files/bf7b033b..b5112c32 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26261&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26261&range=00-01 Stats: 30 lines in 2 files changed: 8 ins; 19 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/26261.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26261/head:pull/26261 PR: https://git.openjdk.org/jdk/pull/26261 From cstein at openjdk.org Mon Aug 11 11:35:13 2025 From: cstein at openjdk.org (Christian Stein) Date: Mon, 11 Aug 2025 11:35:13 GMT Subject: RFR: 8361950: Update to use jtreg 8 In-Reply-To: References: Message-ID: <45gc5UsWc5d6aePWF_7SSX0ERJTTvklTXBukRdjqhCc=.1cf0046e-b697-4fce-9751-e8eade48a49e@github.com> On Fri, 11 Jul 2025 09:05:40 GMT, Christian Stein wrote: > Please review the change to update to using jtreg 8. > > The primary change is to the `jib-profiles.js` file, which specifies the version of jtreg to use, for those systems that rely on this file. In addition, the requiredVersion has been updated in the various `TEST.ROOT` files. I updated both tests to be agnostic about the location to where `jtreg` puts library classes into. See also: https://openjdk.org/jtreg/faq.html#how-do-i-find-the-path-for-the-testng-or-junit-jar-files ------------- PR Comment: https://git.openjdk.org/jdk/pull/26261#issuecomment-3174373256 From ihse at openjdk.org Mon Aug 11 11:53:32 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 11:53:32 GMT Subject: RFR: 8346719: Add relaunchers to the static JDK image for missing executables [v3] In-Reply-To: References: Message-ID: On Fri, 1 Aug 2025 17:12:55 GMT, Erik Joelsson wrote: >> Magnus Ihse Bursie has updated the pull request incrementally with one additional commit since the last revision: >> >> Remove problemlisting > > make/StaticLibs.gmk line 163: > >> 161: # $2: The launcher name >> 162: define SetupRelauncher >> 163: $1_$2_LAUNCHER_ARGS_LINE := $$(shell cat $$(SUPPORT_OUTPUTDIR)/static-native/relaunchers/$1/$2-relauncher-arguments.txt) > > `$(call ReadFile, ...)` > > also, double space? That was nicer. Had forgotten about it. Thanks! ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24380#discussion_r2266464765 From ihse at openjdk.org Mon Aug 11 11:53:31 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 11:53:31 GMT Subject: RFR: 8346719: Add relaunchers to the static JDK image for missing executables [v4] In-Reply-To: References: Message-ID: > In the static JDK image, a single humongous java executable is generated, and no other launcher, such as javac. This makes it impossible to run our jtreg tests, which assume these are present. > > The solution is fortunately simply: we just need to add a bunch of trivial launchers, which are thin wrappers that execute the main java binary, with the proper arguments. This will result in the same behavior as the normal dynamic launchers, only that we will need to take the detour of launching another process instead of calling directly into the JLI library. Magnus Ihse Bursie has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 16 commits: - Use ReadFile instead - Merge branch 'master' into static-relaunchers - Remove problemlisting - Merge branch 'master' into static-relaunchers - Improve windows runtime lib copying - Fix linux launcher to allow relaunching - Copy Windows runtime libs - Merge branch 'master' into static-relaunchers - Merge branch 'master' into static-relaunchers - Add cast for Windows - ... and 6 more: https://git.openjdk.org/jdk/compare/a60e523f...84585f7a ------------- Changes: https://git.openjdk.org/jdk/pull/24380/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24380&range=03 Stats: 817 lines in 14 files changed: 628 ins; 143 del; 46 mod Patch: https://git.openjdk.org/jdk/pull/24380.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/24380/head:pull/24380 PR: https://git.openjdk.org/jdk/pull/24380 From duke at openjdk.org Mon Aug 11 12:05:18 2025 From: duke at openjdk.org (duke) Date: Mon, 11 Aug 2025 12:05:18 GMT Subject: Withdrawn: 8339355: Test build/AbsPathsInImage.java fails configure with --enable-ccache In-Reply-To: References: Message-ID: <1_QIVUsaHQthVscBRFfPKNS3_9SvTCrHk8jNaOdmK2g=.2bb86de4-ec49-4a82-a4ac-49b8a306dabb@github.com> On Sat, 14 Jun 2025 03:51:28 GMT, SendaoYan wrote: > Hi all, > > The debuginfo file will not ship to customers generally, so I think it's not necessary to check the debuginfo files contains absolutive path or not. And I can't find why the debuginfo file always contains workspace path info with --enable-ccache configure option. This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/jdk/pull/25811 From erikj at openjdk.org Mon Aug 11 13:10:17 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 11 Aug 2025 13:10:17 GMT Subject: RFR: 8357979: Compile jdk.internal.vm.ci targeting the Boot JDK version In-Reply-To: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> References: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> Message-ID: On Tue, 1 Jul 2025 14:11:32 GMT, Magnus Ihse Bursie wrote: > From the bug description: > > There are plans to build libgraal in JDK master using a version of Native Image running on a JDK one version behind JDK master. This Native Image execution needs to be able to load the JVMCI classes as they are built into the libgraal image. As such, the JVMCI classes must have a class file major version of N-1 where N is the major class file version of JDK master. > > This PR is basically the same change as published by Doug in https://github.com/openjdk/jdk/pull/25494, but it contains some cleanup and adds and uses the `TARGET_RELEASE` argument that Doug correctly realized was needed. make/common/JavaCompilation.gmk line 42: > 40: # Create classes that can run on the bootjdk > 41: # -Xlint:-options is added to avoid "warning: [options] system modules path not set in conjunction with -source" > 42: TARGET_RELEASE_BOOTJDK := -source $(OLDEST_BOOT_JDK_VERSION) -target $(OLDEST_BOOT_JDK_VERSION) -Xlint:-options Line length? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26069#discussion_r2266708444 From erikj at openjdk.org Mon Aug 11 13:15:12 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 11 Aug 2025 13:15:12 GMT Subject: RFR: 8365238: 'jfr' feature requires 'services' with 'custom' build variant In-Reply-To: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> References: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> Message-ID: On Mon, 11 Aug 2025 10:55:44 GMT, Francesco Andreuzzi wrote: > In this PR I add an `autoconfigure` check to make sure that `jfr` is not built without the feature `services`, which would lead to the following error: > > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp: In member function ?virtual void VM_GC_SendObjectCountEvent::doit()?: > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:402:5: error: ?ObjectCountEventSender? has not been declared > 402 | ObjectCountEventSender::enable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:404:5: error: ?ObjectCountEventSender? has not been declared > 404 | ObjectCountEventSender::disable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > > > To reproduce: > > sh configure --with-jvm-variants=custom --with-conf-name=cstm --enable-jvm-feature-jfr --enable-jvm-feature-serialgc > make -j hotspot CONF_NAME=cstm I think this looks ok, but it would be good if someone from Hotspot could confirm that this is an intended dependency. ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26723#pullrequestreview-3105801914 From shade at openjdk.org Mon Aug 11 13:43:11 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Mon, 11 Aug 2025 13:43:11 GMT Subject: RFR: 8365238: 'jfr' feature requires 'services' with 'custom' build variant In-Reply-To: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> References: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> Message-ID: On Mon, 11 Aug 2025 10:55:44 GMT, Francesco Andreuzzi wrote: > In this PR I add an `autoconfigure` check to make sure that `jfr` is not built without the feature `services`, which would lead to the following error: > > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp: In member function ?virtual void VM_GC_SendObjectCountEvent::doit()?: > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:402:5: error: ?ObjectCountEventSender? has not been declared > 402 | ObjectCountEventSender::enable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:404:5: error: ?ObjectCountEventSender? has not been declared > 404 | ObjectCountEventSender::disable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > > > To reproduce: > > sh configure --with-jvm-variants=custom --with-conf-name=cstm --enable-jvm-feature-jfr --enable-jvm-feature-serialgc > make -j hotspot CONF_NAME=cstm Looks like `ObjectCountEventSender` is JFR-specific, and `#if INCLUDE_SERVICES` in `objectCounterEventSender.cpp` is incorrect. If this is the only dependency between `jfr` and `services`, we should just fix `ObjectCountEventSender`. Agree, @egahlin? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26723#issuecomment-3174898061 From ihse at openjdk.org Mon Aug 11 13:44:32 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 13:44:32 GMT Subject: RFR: 8357979: Compile jdk.internal.vm.ci targeting the Boot JDK version [v2] In-Reply-To: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> References: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> Message-ID: > From the bug description: > > There are plans to build libgraal in JDK master using a version of Native Image running on a JDK one version behind JDK master. This Native Image execution needs to be able to load the JVMCI classes as they are built into the libgraal image. As such, the JVMCI classes must have a class file major version of N-1 where N is the major class file version of JDK master. > > This PR is basically the same change as published by Doug in https://github.com/openjdk/jdk/pull/25494, but it contains some cleanup and adds and uses the `TARGET_RELEASE` argument that Doug correctly realized was needed. Magnus Ihse Bursie has updated the pull request incrementally with one additional commit since the last revision: Shorten line lengths ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26069/files - new: https://git.openjdk.org/jdk/pull/26069/files/f02d2077..03f97110 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26069&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26069&range=00-01 Stats: 9 lines in 1 file changed: 4 ins; 0 del; 5 mod Patch: https://git.openjdk.org/jdk/pull/26069.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26069/head:pull/26069 PR: https://git.openjdk.org/jdk/pull/26069 From ihse at openjdk.org Mon Aug 11 13:44:33 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 13:44:33 GMT Subject: RFR: 8357979: Compile jdk.internal.vm.ci targeting the Boot JDK version [v2] In-Reply-To: References: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> Message-ID: On Mon, 11 Aug 2025 13:07:59 GMT, Erik Joelsson wrote: >> Magnus Ihse Bursie has updated the pull request incrementally with one additional commit since the last revision: >> >> Shorten line lengths > > make/common/JavaCompilation.gmk line 42: > >> 40: # Create classes that can run on the bootjdk >> 41: # -Xlint:-options is added to avoid "warning: [options] system modules path not set in conjunction with -source" >> 42: TARGET_RELEASE_BOOTJDK := -source $(OLDEST_BOOT_JDK_VERSION) -target $(OLDEST_BOOT_JDK_VERSION) -Xlint:-options > > Line length? It was copied from old code, I did not even think of that. I also fixed some other too long lines in the vicinity. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26069#discussion_r2266809988 From erikj at openjdk.org Mon Aug 11 13:52:13 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 11 Aug 2025 13:52:13 GMT Subject: RFR: 8357979: Compile jdk.internal.vm.ci targeting the Boot JDK version [v2] In-Reply-To: References: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> Message-ID: On Mon, 11 Aug 2025 13:44:32 GMT, Magnus Ihse Bursie wrote: >> From the bug description: >> >> There are plans to build libgraal in JDK master using a version of Native Image running on a JDK one version behind JDK master. This Native Image execution needs to be able to load the JVMCI classes as they are built into the libgraal image. As such, the JVMCI classes must have a class file major version of N-1 where N is the major class file version of JDK master. >> >> This PR is basically the same change as published by Doug in https://github.com/openjdk/jdk/pull/25494, but it contains some cleanup and adds and uses the `TARGET_RELEASE` argument that Doug correctly realized was needed. > > Magnus Ihse Bursie has updated the pull request incrementally with one additional commit since the last revision: > > Shorten line lengths Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26069#pullrequestreview-3105998320 From ihse at openjdk.org Mon Aug 11 14:08:11 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 14:08:11 GMT Subject: RFR: 8365238: 'jfr' feature requires 'services' with 'custom' build variant In-Reply-To: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> References: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> Message-ID: On Mon, 11 Aug 2025 10:55:44 GMT, Francesco Andreuzzi wrote: > In this PR I add an `autoconfigure` check to make sure that `jfr` is not built without the feature `services`, which would lead to the following error: > > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp: In member function ?virtual void VM_GC_SendObjectCountEvent::doit()?: > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:402:5: error: ?ObjectCountEventSender? has not been declared > 402 | ObjectCountEventSender::enable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:404:5: error: ?ObjectCountEventSender? has not been declared > 404 | ObjectCountEventSender::disable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > > > To reproduce: > > sh configure --with-jvm-variants=custom --with-conf-name=cstm --enable-jvm-feature-jfr --enable-jvm-feature-serialgc > make -j hotspot CONF_NAME=cstm I think it is not that simple, unfortunately. I tried changing the ifdef but ran into additional issues. In gcTrace.cpp we have: virtual void do_cinfo(KlassInfoEntry* entry) { if (should_send_event(entry)) { ObjectCountEventSender::send(entry, _timestamp); } } private: bool should_send_event(const KlassInfoEntry* entry) const { double percentage_of_heap = ((double) entry->words()) / _total_size_in_words; return percentage_of_heap >= _size_threshold_percentage; } which requires KlassInfoEntry (defined in src/hotspot/share/memory/heapInspection.hpp). When I tried to change that ifdef to INCLUDE_JFR, building with the `jfr` feature succeeded, but building with `services` failed. So it seems there is some shared code here. Either heapInspection needs to be included if either `jfr` or `services` are enabled, or we should go the route of this PR and say that JFR is dependent on services. I think the latter seems cleaner. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26723#issuecomment-3175002573 From ihse at openjdk.org Mon Aug 11 14:16:18 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 14:16:18 GMT Subject: Integrated: 8357979: Compile jdk.internal.vm.ci targeting the Boot JDK version In-Reply-To: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> References: <2CLx0WU6ZAmW7ewzkvL_Lq6ELqc_AvibM9bWZjc8OcY=.86e6519f-3153-45f3-89cf-df30c8a1de29@github.com> Message-ID: On Tue, 1 Jul 2025 14:11:32 GMT, Magnus Ihse Bursie wrote: > From the bug description: > > There are plans to build libgraal in JDK master using a version of Native Image running on a JDK one version behind JDK master. This Native Image execution needs to be able to load the JVMCI classes as they are built into the libgraal image. As such, the JVMCI classes must have a class file major version of N-1 where N is the major class file version of JDK master. > > This PR is basically the same change as published by Doug in https://github.com/openjdk/jdk/pull/25494, but it contains some cleanup and adds and uses the `TARGET_RELEASE` argument that Doug correctly realized was needed. This pull request has now been integrated. Changeset: 23985c29 Author: Magnus Ihse Bursie URL: https://git.openjdk.org/jdk/commit/23985c29b44b489472dcd3aad2cb98d9ce003a7b Stats: 19 lines in 5 files changed: 8 ins; 3 del; 8 mod 8357979: Compile jdk.internal.vm.ci targeting the Boot JDK version Reviewed-by: erikj, dnsimon ------------- PR: https://git.openjdk.org/jdk/pull/26069 From ihse at openjdk.org Mon Aug 11 14:21:12 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 14:21:12 GMT Subject: RFR: 8346719: Add relaunchers to the static JDK image for missing executables [v3] In-Reply-To: References: Message-ID: On Fri, 1 Aug 2025 14:33:43 GMT, Erik Joelsson wrote: >> Magnus Ihse Bursie has updated the pull request incrementally with one additional commit since the last revision: >> >> Remove problemlisting > > make/ModuleWrapper.gmk line 82: > >> 80: TARGETS += $(LAUNCHERS_LIST) >> 81: endif >> 82: endif > > I think it would be cleaner if this could be kept in LauncherCommon.gmk and avoid having ModuleWrapper.gmk involved in this. I think it can be done relatively easily. In SetupBuildLauncherBody, instead of constructing the variable `$(MODULE)_INCLUDED_LAUNCHERS`, declare dependencies for `$(LAUNCHER_LIST)`, something like this: > > $(LAUNCHER_LIST): $$($1) > TARGETS += $(LAUNCHER_LIST) > > > Then put the the recipe for `$(LAUNCHER_LIST)` at the end of LauncherCommon.gmk. The $(LAUNCHER_LIST) value will sometimes be added to TARGETS multiple times, but that's ok I think. Hm. I put it there since it was the only place where we could be sure we know *all* launchers for a module. I could have each launcher add itself to the list, but then I either need to check if it is already there, or we will just append to the list each time we rebuild. And we risk a race when several launchers build at the same time. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24380#discussion_r2266920768 From ihse at openjdk.org Mon Aug 11 14:21:12 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 14:21:12 GMT Subject: RFR: 8346719: Add relaunchers to the static JDK image for missing executables [v3] In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 14:17:26 GMT, Magnus Ihse Bursie wrote: >> make/ModuleWrapper.gmk line 82: >> >>> 80: TARGETS += $(LAUNCHERS_LIST) >>> 81: endif >>> 82: endif >> >> I think it would be cleaner if this could be kept in LauncherCommon.gmk and avoid having ModuleWrapper.gmk involved in this. I think it can be done relatively easily. In SetupBuildLauncherBody, instead of constructing the variable `$(MODULE)_INCLUDED_LAUNCHERS`, declare dependencies for `$(LAUNCHER_LIST)`, something like this: >> >> $(LAUNCHER_LIST): $$($1) >> TARGETS += $(LAUNCHER_LIST) >> >> >> Then put the the recipe for `$(LAUNCHER_LIST)` at the end of LauncherCommon.gmk. The $(LAUNCHER_LIST) value will sometimes be added to TARGETS multiple times, but that's ok I think. > > Hm. I put it there since it was the only place where we could be sure we know *all* launchers for a module. I could have each launcher add itself to the list, but then I either need to check if it is already there, or we will just append to the list each time we rebuild. And we risk a race when several launchers build at the same time. I could also create a separate file for each launcher with a name pattern and gather up all these files in StaticLibs.gmk, but then I will get problems with left-over such files, for e.g. if incrementally building after removing a launcher. Not a common scenario, I agree, but it seems like a worse solution. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24380#discussion_r2266924514 From shade at openjdk.org Mon Aug 11 14:25:13 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Mon, 11 Aug 2025 14:25:13 GMT Subject: RFR: 8365238: 'jfr' feature requires 'services' with 'custom' build variant In-Reply-To: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> References: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> Message-ID: On Mon, 11 Aug 2025 10:55:44 GMT, Francesco Andreuzzi wrote: > In this PR I add an `autoconfigure` check to make sure that `jfr` is not built without the feature `services`, which would lead to the following error: > > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp: In member function ?virtual void VM_GC_SendObjectCountEvent::doit()?: > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:402:5: error: ?ObjectCountEventSender? has not been declared > 402 | ObjectCountEventSender::enable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:404:5: error: ?ObjectCountEventSender? has not been declared > 404 | ObjectCountEventSender::disable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > > > To reproduce: > > sh configure --with-jvm-variants=custom --with-conf-name=cstm --enable-jvm-feature-jfr --enable-jvm-feature-serialgc > make -j hotspot CONF_NAME=cstm Yes, all right. ------------- Marked as reviewed by shade (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26723#pullrequestreview-3106144792 From ihse at openjdk.org Mon Aug 11 14:25:13 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 14:25:13 GMT Subject: RFR: 8346719: Add relaunchers to the static JDK image for missing executables [v3] In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 14:18:41 GMT, Magnus Ihse Bursie wrote: >> Hm. I put it there since it was the only place where we could be sure we know *all* launchers for a module. I could have each launcher add itself to the list, but then I either need to check if it is already there, or we will just append to the list each time we rebuild. And we risk a race when several launchers build at the same time. > > I could also create a separate file for each launcher with a name pattern and gather up all these files in StaticLibs.gmk, but then I will get problems with left-over such files, for e.g. if incrementally building after removing a launcher. Not a common scenario, I agree, but it seems like a worse solution. This solution was modeled on how we create `module-included-libs.txt`. I agree that it is a bit hacky to inject this kind of stuff in ModuleWrapper, but I can't see how we can do it more cleanly. That's the only point at which we know the entire module for a phase. Maybe we can improve optics by doing a more official-looking "hook" for injecting functionality at pre-/post- whole-module processing? That would keep ModuleWrapper slimmer and without all the current specialized hooks, and make the name "wrapper" more relevant. Or, we could rename the makefile to indicate better that it does a lot more than just wraps a file. (I have no good suggestions right now.) ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24380#discussion_r2266936847 From ihse at openjdk.org Mon Aug 11 14:32:11 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 14:32:11 GMT Subject: RFR: 8365238: 'jfr' feature requires 'services' with 'custom' build variant In-Reply-To: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> References: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> Message-ID: On Mon, 11 Aug 2025 10:55:44 GMT, Francesco Andreuzzi wrote: > In this PR I add an `autoconfigure` check to make sure that `jfr` is not built without the feature `services`, which would lead to the following error: > > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp: In member function ?virtual void VM_GC_SendObjectCountEvent::doit()?: > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:402:5: error: ?ObjectCountEventSender? has not been declared > 402 | ObjectCountEventSender::enable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:404:5: error: ?ObjectCountEventSender? has not been declared > 404 | ObjectCountEventSender::disable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > > > To reproduce: > > sh configure --with-jvm-variants=custom --with-conf-name=cstm --enable-jvm-feature-jfr --enable-jvm-feature-serialgc > make -j hotspot CONF_NAME=cstm Marked as reviewed by ihse (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26723#pullrequestreview-3106181208 From duke at openjdk.org Mon Aug 11 14:40:18 2025 From: duke at openjdk.org (duke) Date: Mon, 11 Aug 2025 14:40:18 GMT Subject: RFR: 8365238: 'jfr' feature requires 'services' with 'custom' build variant In-Reply-To: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> References: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> Message-ID: On Mon, 11 Aug 2025 10:55:44 GMT, Francesco Andreuzzi wrote: > In this PR I add an `autoconfigure` check to make sure that `jfr` is not built without the feature `services`, which would lead to the following error: > > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp: In member function ?virtual void VM_GC_SendObjectCountEvent::doit()?: > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:402:5: error: ?ObjectCountEventSender? has not been declared > 402 | ObjectCountEventSender::enable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:404:5: error: ?ObjectCountEventSender? has not been declared > 404 | ObjectCountEventSender::disable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > > > To reproduce: > > sh configure --with-jvm-variants=custom --with-conf-name=cstm --enable-jvm-feature-jfr --enable-jvm-feature-serialgc > make -j hotspot CONF_NAME=cstm @fandreuz Your change (at version 2c70a6cabe32453b44d846822552ca3243e2f59d) is now ready to be sponsored by a Committer. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26723#issuecomment-3175160117 From duke at openjdk.org Mon Aug 11 14:53:17 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Mon, 11 Aug 2025 14:53:17 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 22:11:32 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - magic number: 400 > - inline Some results: | Features | Time1 (s) | Time2 (s) | Change (s) | |---------------------------------|----------|----------|-------------| | epsilongc | 490.77 | 489.50 | 1.27 | | epsilongc cds | 546.27 | 537.91 | 8.36 | | epsilongc compiler1 | 547.87 | 539.86 | 8.01 | | epsilongc compiler2 | 785.18 | 735.13 | 50.05 | | g1gc | 682.44 | 666.40 | 16.04 | | epsilongc services | 510.22 | 504.68 | 5.54 | | epsilongc services jfr | 675.49 | 636.87 | 38.62 | | epsilongc jni-check | 499.53 | 493.72 | 5.81 | | epsilongc compiler1 jvmci | 589.74 | 591.32 | -1.58 | | epsilongc compiler2 jvmci | 852.46 | 806.35 | 46.11 | | epsilongc services jvmti | 567.67 | 561.73 | 5.94 | | epsilongc link-time-opt | 535.96 | 526.00 | 9.97 | | epsilongc management | 508.63 | 504.53 | 4.10 | | epsilongc opt-size | 507.03 | 498.58 | 8.45 | | parallelgc | 525.78 | 517.38 | 8.40 | | serialgc | 512.59 | 511.88 | 0.71 | | shenandoahgc | 739.44 | 722.72 | 16.72 | | zgc | 681.20 | 672.28 | 8.92 | - `Time1` is the time (sys+user) it takes to complete `make -h hotspot` with the precompiled headers in be25d3413b432b56e9789eae55920f1862008911 (>=400 includes in a `custom` build) - `Time2`: same as `Time1`, with the precompiled headers having >=400 includes in a `custom` build with all features in the first column So, the third column measures how much we improve by taking new precompiled headers due to a specific features. I'd say the following are worth keeping behind an include guard: - `cds` - `compiler1` - `compiler2` - `g1gc` - `services` - `jfr` ==> `services` (#26723) - `jni-check` - `link-time-opt` - `opt-size` - `parallelgc` - `shenandoahgc` - `zgc` ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3175208900 From stuefe at openjdk.org Mon Aug 11 15:41:19 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Mon, 11 Aug 2025 15:41:19 GMT Subject: Integrated: 8364611: (process) Child process SIGPIPE signal disposition should be default In-Reply-To: References: Message-ID: On Mon, 4 Aug 2025 08:40:13 GMT, Thomas Stuefe wrote: > A customer reported an error where a well-known system library, upon loading into the JVM process (via a longish indirect dependency chain), changed the signal disposition of the process for SIGPIPE to SIG_IGN. This gets inherited down to child processes, where it caused child processes to not react to SIGPIPE. > > The system library is clearly at fault here, but the current workaround we recommend (pre-loading libjsig to interpose incorrect signal handling requests) is impractical for many customers. It is an okay solution when customers themselves have uncommon signal handling requirements; but for cases like these, where some version of system library does that, we should have a more pragmatic solution. > > See further details and arguments for the fix in this mail thread: https://mail.openjdk.org/pipermail/core-libs-dev/2025-April/144077.html . > > The behavior is changed changed such that we set SIGPIPE to SIG_DFL in the child processes, and a regression test is added. Note: Regression test deliberately prints outs details for other POSIX signals too; this can be both a good ad-hoc analysis tool as well as a point where we add more tests for other signals, should we ever need to. This patch, however, is deliberately restricted to just fixing SIGPIPE. This pull request has now been integrated. Changeset: bdb1646a Author: Thomas Stuefe URL: https://git.openjdk.org/jdk/commit/bdb1646a1e39bae0535efe3f593e7fc0545e4114 Stats: 196 lines in 5 files changed: 195 ins; 0 del; 1 mod 8364611: (process) Child process SIGPIPE signal disposition should be default Reviewed-by: erikj, rriggs ------------- PR: https://git.openjdk.org/jdk/pull/26615 From ihse at openjdk.org Mon Aug 11 15:52:21 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 15:52:21 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 14:49:54 GMT, Francesco Andreuzzi wrote: > * `link-time-opt` > > * `opt-size` I thought these should not really affect the set of files compiled (or included, which is what matters here)? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3175481286 From duke at openjdk.org Mon Aug 11 16:27:15 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Mon, 11 Aug 2025 16:27:15 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: <7_2SHq1iU6SEIPWDiTaNhW6G0ChhcnsXtrVxMUgB0ts=.a407d743-9d86-4ab3-b905-3ea8cf8069f3@github.com> On Mon, 11 Aug 2025 15:49:55 GMT, Magnus Ihse Bursie wrote: >> Some results: >> >> | Features | Time1 (s) | Time2 (s) | Change (s) | >> |---------------------------------|----------|----------|-------------| >> | epsilongc | 490.77 | 489.50 | 1.27 | >> | epsilongc cds | 546.27 | 537.91 | 8.36 | >> | epsilongc compiler1 | 547.87 | 539.86 | 8.01 | >> | epsilongc compiler2 | 785.18 | 735.13 | 50.05 | >> | g1gc | 682.44 | 666.40 | 16.04 | >> | epsilongc services | 510.22 | 504.68 | 5.54 | >> | epsilongc services jfr | 675.49 | 636.87 | 38.62 | >> | epsilongc jni-check | 499.53 | 493.72 | 5.81 | >> | epsilongc compiler1 jvmci | 589.74 | 591.32 | -1.58 | >> | epsilongc compiler2 jvmci | 852.46 | 806.35 | 46.11 | >> | epsilongc services jvmti | 567.67 | 561.73 | 5.94 | >> | epsilongc link-time-opt | 535.96 | 526.00 | 9.97 | >> | epsilongc management | 508.63 | 504.53 | 4.10 | >> | epsilongc opt-size | 507.03 | 498.58 | 8.45 | >> | parallelgc | 525.78 | 517.38 | 8.40 | >> | serialgc | 512.59 | 511.88 | 0.71 | >> | shenandoahgc | 739.44 | 722.72 | 16.72 | >> | zgc | 681.20 | 672.28 | 8.92 | >> >> - `Time1` is the time (sys+user) it takes to complete `make -h hotspot` with the precompiled headers in be25d3413b432b56e9789eae55920f1862008911 (>=400 includes in a `custom` build) >> - `Time2`: same as `Time1`, with the precompiled headers having >=400 includes in a `custom` build with all features in the first column >> >> So, the third column measures how much we improve by taking new precompiled headers due to a specific features. I'd say the following are worth keeping behind an include guard: >> - `cds` >> - `compiler1` >> - `compiler2` >> - `g1gc` >> - `services` >> - `jfr` ==> `services` (#26723) >> - `jni-check` >> - `link-time-opt` >> - `opt-size` >> - `parallelgc` >> - `shenandoahgc` >> - `zgc` > >> * `link-time-opt` >> >> * `opt-size` > > I thought these should not really affect the set of files compiled (or included, which is what matters here)? That's right @magicus, I rerun the script and I got only a `1.86s` improvements for `link-time-opt`. I checked the includes in `precompiled.hpp` and indeed nothing changes when the analyzer runs on a build with `link-time-opt`. So, exactly the same build, just different build times. That's most likely noise. I'd say, as a criteria we could use is: - Improvement > 10s (unlikely to be noise, but still possible) - new headers added to `precompiled.hpp` is not empty ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3175758710 From duke at openjdk.org Mon Aug 11 17:13:18 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Mon, 11 Aug 2025 17:13:18 GMT Subject: Integrated: 8365238: 'jfr' feature requires 'services' with 'custom' build variant In-Reply-To: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> References: <1t7GxB8MYel7a1yE9ZFZTjxarzhsFb6vYV8h3rbrSg0=.5ab49f4b-ea78-4b53-bdb1-4a07103254e2@github.com> Message-ID: On Mon, 11 Aug 2025 10:55:44 GMT, Francesco Andreuzzi wrote: > In this PR I add an `autoconfigure` check to make sure that `jfr` is not built without the feature `services`, which would lead to the following error: > > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp: In member function ?virtual void VM_GC_SendObjectCountEvent::doit()?: > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:402:5: error: ?ObjectCountEventSender? has not been declared > 402 | ObjectCountEventSender::enable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > /jdk/src/hotspot/share/jfr/periodic/jfrPeriodic.cpp:404:5: error: ?ObjectCountEventSender? has not been declared > 404 | ObjectCountEventSender::disable_requestable_event(); > | ^~~~~~~~~~~~~~~~~~~~~~ > > > To reproduce: > > sh configure --with-jvm-variants=custom --with-conf-name=cstm --enable-jvm-feature-jfr --enable-jvm-feature-serialgc > make -j hotspot CONF_NAME=cstm This pull request has now been integrated. Changeset: e9e331b2 Author: Francesco Andreuzzi Committer: Paul Hohensee URL: https://git.openjdk.org/jdk/commit/e9e331b2a957180dac2e9ce19a58d0a57d2f5dae Stats: 4 lines in 1 file changed: 4 ins; 0 del; 0 mod 8365238: 'jfr' feature requires 'services' with 'custom' build variant Reviewed-by: erikj, shade, ihse ------------- PR: https://git.openjdk.org/jdk/pull/26723 From erikj at openjdk.org Mon Aug 11 17:23:11 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 11 Aug 2025 17:23:11 GMT Subject: RFR: 8346719: Add relaunchers to the static JDK image for missing executables [v3] In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 14:23:03 GMT, Magnus Ihse Bursie wrote: >> I could also create a separate file for each launcher with a name pattern and gather up all these files in StaticLibs.gmk, but then I will get problems with left-over such files, for e.g. if incrementally building after removing a launcher. Not a common scenario, I agree, but it seems like a worse solution. > > This solution was modeled on how we create `module-included-libs.txt`. I agree that it is a bit hacky to inject this kind of stuff in ModuleWrapper, but I can't see how we can do it more cleanly. That's the only point at which we know the entire module for a phase. > > Maybe we can improve optics by doing a more official-looking "hook" for injecting functionality at pre-/post- whole-module processing? That would keep ModuleWrapper slimmer and without all the current specialized hooks, and make the name "wrapper" more relevant. > > Or, we could rename the makefile to indicate better that it does a lot more than just wraps a file. (I have no good suggestions right now.) I'm not sure what you mean here. I described a solution that keeps it in LauncherCommon without creating races. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24380#discussion_r2267491796 From iris at openjdk.org Mon Aug 11 17:38:12 2025 From: iris at openjdk.org (Iris Clark) Date: Mon, 11 Aug 2025 17:38:12 GMT Subject: RFR: 8361950: Update to use jtreg 8 [v2] In-Reply-To: References: Message-ID: <3cVhuiuq1cW-XgONMnkCje3LI6yOMIxTmmiH5AStlTY=.e6a50bf3-0a7e-437b-bd66-3f6b59353b74@github.com> On Mon, 11 Aug 2025 11:35:12 GMT, Christian Stein wrote: >> Please review the change to update to using jtreg 8. >> >> The primary change is to the `jib-profiles.js` file, which specifies the version of jtreg to use, for those systems that rely on this file. In addition, the requiredVersion has been updated in the various `TEST.ROOT` files. > > Christian Stein has updated the pull request incrementally with one additional commit since the last revision: > > Update to use correct library directories > > See also: https://openjdk.org/jtreg/faq.html#how-do-i-find-the-path-for-the-testng-or-junit-jar-files Marked as reviewed by iris (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26261#pullrequestreview-3106980594 From duke at openjdk.org Mon Aug 11 18:32:17 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Mon, 11 Aug 2025 18:32:17 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 22:11:32 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - magic number: 400 > - inline Just found a bug in the script, I'm rerunning all the combinations. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3176301836 From lmesnik at openjdk.org Mon Aug 11 19:35:11 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Mon, 11 Aug 2025 19:35:11 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v3] In-Reply-To: References: Message-ID: On Sun, 10 Aug 2025 06:09:00 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: > > fixed makefiles Thank you feedback, I explained the usage of JTREG_JVMTI_STRESS_AGENT and applied your changes. ------------- PR Review: https://git.openjdk.org/jdk/pull/26360#pullrequestreview-3107474883 From lmesnik at openjdk.org Mon Aug 11 19:35:13 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Mon, 11 Aug 2025 19:35:13 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v3] In-Reply-To: <6BPt_Y_57yRWLC6iksvVGg3SkPKM98UAasfCcrAPFeo=.99d5dd24-39b4-4935-89c0-ff17aecd4b20@github.com> References: <6BPt_Y_57yRWLC6iksvVGg3SkPKM98UAasfCcrAPFeo=.99d5dd24-39b4-4935-89c0-ff17aecd4b20@github.com> Message-ID: <4zzzq381JNv2-LyGnqTZwxz1eLe-VPlqVcoF08Qw2V4=.ea35f8d3-c109-4614-8244-cf4a6f407f49@github.com> On Mon, 11 Aug 2025 09:35:09 GMT, Magnus Ihse Bursie wrote: >> Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: >> >> fixed makefiles > > make/RunTests.gmk line 881: > >> 879: >> 880: ifneq ($$(JTREG_JVMTI_STRESS_AGENT), ) >> 881: AGENT := $$(LIBRARY_PREFIX)JvmtiStressAgent$$(SHARED_LIBRARY_SUFFIX)=$$(JTREG_JVMTI_STRESS_AGENT) > > I don't understand the usage scenario here. Are you supposed to run this like `make test JTREG=JVMTI_STRESS_AGENT=true`? If so, this will result in `-javaoption:'-agentpath:/hotspot/jtreg/native/libJvmtiStressAgent.so=true` being sent to jtreg, and that looks sus. > > Or how should this be used? > > In fact, this option should be described in testing.md. This is a jtreg agent options, I use it like JTREG_JVMTI_STRESS_AGENT=debugger=false or JTREG_JVMTI_STRESS_AGENT=debugger=true,verbose Any of options enable jvmti agent and parsed by it. I don't want to add 2 options, for hits. The JTREG_JVMTI_STRESS_AGENT=false doesn't make any sense. The options are defined by stress agent while makefile just propagate them to the agent. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26360#discussion_r2267818671 From liach at openjdk.org Mon Aug 11 20:59:15 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 11 Aug 2025 20:59:15 GMT Subject: RFR: 8362885: A more formal way to mark javac's Flags that belong to a specific Symbol type only [v5] In-Reply-To: References: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> Message-ID: On Mon, 11 Aug 2025 09:57:03 GMT, Jan Lahoda wrote: >> This PR proposes to improve handling of javac's `Flags` in two ways: >> - for each flag, there's now an informational annotation specifying what is the target Symbol type. Only targets right now are `TypeSymbol`s, `MethodSymbol`s and `VarSymbol`s. If we ran out of flags for `TypeSymbol`s, we could split those to module/package/class/type variable, but it does not seem to be quite necessary yet. There's an auxiliary special `BLOCK`, which is for `JCBlock`. >> - the manually handled `Flags.Flag` enum is replaced with autogenerated `FlagsEnum` >> >> This is inspired by: >> https://github.com/openjdk/jdk/pull/26181#pullrequestreview-2997428662 >> >> There may be some better to handle `Flags` eventually, but this hopefully improves the current situation at least somewhat, by providing more formal way to say the flags' target, and restricting the need to read comments and search for free flags. >> >> As a side-effect of this annotation, the `test/langtools/tools/javac/flags/FlagsTest.java` now also prints which flags are free, for each Symbol type. >> >> (I will remove the `build` label for now, until discussion on javac level is done, and will re-add it if we decide the goal to autogenerate the FlagsEnum makes sense.) > > Jan Lahoda has updated the pull request incrementally with three additional commits since the last revision: > > - Merge remote-tracking branch 'origin/JDK-8362885' into JDK-8362885 > - Using EnumMap, as suggested. > - Removing unnecessary delimited, as suggested. Looks good. This should have minimal impact to javac performance. ------------- Marked as reviewed by liach (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26452#pullrequestreview-3107758710 From vromero at openjdk.org Mon Aug 11 21:06:14 2025 From: vromero at openjdk.org (Vicente Romero) Date: Mon, 11 Aug 2025 21:06:14 GMT Subject: RFR: 8362885: A more formal way to mark javac's Flags that belong to a specific Symbol type only [v5] In-Reply-To: References: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> Message-ID: On Mon, 11 Aug 2025 09:57:03 GMT, Jan Lahoda wrote: >> This PR proposes to improve handling of javac's `Flags` in two ways: >> - for each flag, there's now an informational annotation specifying what is the target Symbol type. Only targets right now are `TypeSymbol`s, `MethodSymbol`s and `VarSymbol`s. If we ran out of flags for `TypeSymbol`s, we could split those to module/package/class/type variable, but it does not seem to be quite necessary yet. There's an auxiliary special `BLOCK`, which is for `JCBlock`. >> - the manually handled `Flags.Flag` enum is replaced with autogenerated `FlagsEnum` >> >> This is inspired by: >> https://github.com/openjdk/jdk/pull/26181#pullrequestreview-2997428662 >> >> There may be some better to handle `Flags` eventually, but this hopefully improves the current situation at least somewhat, by providing more formal way to say the flags' target, and restricting the need to read comments and search for free flags. >> >> As a side-effect of this annotation, the `test/langtools/tools/javac/flags/FlagsTest.java` now also prints which flags are free, for each Symbol type. >> >> (I will remove the `build` label for now, until discussion on javac level is done, and will re-add it if we decide the goal to autogenerate the FlagsEnum makes sense.) > > Jan Lahoda has updated the pull request incrementally with three additional commits since the last revision: > > - Merge remote-tracking branch 'origin/JDK-8362885' into JDK-8362885 > - Using EnumMap, as suggested. > - Removing unnecessary delimited, as suggested. very nice! ------------- Marked as reviewed by vromero (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26452#pullrequestreview-3107774416 From duke at openjdk.org Mon Aug 11 21:37:14 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Mon, 11 Aug 2025 21:37:14 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 22:11:32 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - magic number: 400 > - inline | Feature | Baseline `precompiled.hpp` (Mean ?) | Updated `precompiled.hpp` (Mean ?) | |-----------------------|---------------------|----------------------| | epsilongc | 505.78 ? 9.08 | 499.36 ? 3.21 | | epsilongc cds | 523.93 ? 9.42 | 510.68 ? 0.99 | | epsilongc compiler1 | 514.89 ? 2.28 | 518.67 ? 14.22 | | epsilongc compiler2 | 758.34 ? 5.56 | 736.65 ? 32.95 | | g1gc | 674.96 ? 6.37 | 693.39 ? 23.25 | | epsilongc services jfr| 707.45 ? 2.08 | 670.55 ? 1.50 | | epsilongc jni-check | 522.61 ? 1.82 | 517.46 ? 1.67 | | epsilongc compiler1 jvmci | 604.92 ? 4.23 | 600.61 ? 8.79 | | epsilongc compiler2 jvmci | 836.85 ? 7.40 | 792.07 ? 16.18 | | epsilongc services jvmti | 549.48 ? 6.87 | 553.74 ? 7.67 | | epsilongc management | 486.56 ? 5.68 | 480.58 ? 4.59 | | epsilongc opt-size | 476.57 ? 1.87 | 476.71 ? 1.23 | | parallelgc | 497.28 ? 3.90 | 493.68 ? 2.19 | | serialgc | 477.84 ? 0.86 | 476.14 ? 1.32 | | epsilongc services | 476.99 ? 2.44 | 478.74 ? 3.47 | | shenandoahgc | 676.10 ? 5.35 | 623.43 ? 3.11 | | zgc | 620.95 ? 1.84 | 621.86 ? 4.35 | `?`: maximum and minimum measurements ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3176968277 From ihse at openjdk.org Mon Aug 11 22:38:13 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 11 Aug 2025 22:38:13 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 22:11:32 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - magic number: 400 > - inline This looks like regressions for c1 and G1..? And/or a lot more variability in build time. Any idea what is causing that? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3177090836 From duke at openjdk.org Tue Aug 12 00:54:14 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Tue, 12 Aug 2025 00:54:14 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 22:11:32 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - magic number: 400 > - inline I'm starting to think the high variability is a quirk of my environment. I ran the builds in a virtualized machine and I'm probably experiencing erratic behavior under high load. I re-ran each combination fewer times (3, should still be enough to get an idea), and I'm observing more reasonable results: | Feature | Baseline `precompiled.hpp` | Updated `precompiled.hpp` | |----------------------------|-----------------|-----------------| | epsilongc | 458.88 +/- 0.35 | 459.69 +/- 0.34 | | epsilongc cds | 501.63 +/- 0.35 | 501.58 +/- 0.57 | | epsilongc compiler1 | 505.66 +/- 0.61 | 505.06 +/- 0.51 | | epsilongc compiler2 | 725.91 +/- 0.41 | 692.25 +/- 0.40 | | g1gc | 630.73 +/- 0.02 | 624.24 +/- 0.35 | | epsilongc services jfr | 625.54 +/- 1.45 | 592.37 +/- 1.00 | | epsilongc jni-check | 461.19 +/- 0.14 | 461.79 +/- 0.89 | | epsilongc compiler1 jvmci | 541.31 +/- 0.42 | 540.31 +/- 0.70 | | epsilongc compiler2 jvmci | 758.13 +/- 0.71 | 724.80 +/- 0.21 | | epsilongc services jvmti | 499.64 +/- 0.18 | 499.69 +/- 0.52 | | epsilongc management | 450.82 +/- 0.62 | 451.38 +/- 0.59 | | epsilongc opt-size | 446.44 +/- 0.56 | 446.16 +/- 0.12 | | parallelgc | 467.23 +/- 0.19 | 466.89 +/- 0.41 | | serialgc | 454.17 +/- 0.40 | 454.22 +/- 0.12 | | epsilongc services | 453.82 +/- 0.21 | 453.59 +/- 0.51 | | shenandoahgc | 658.17 +/- 0.50 | 647.44 +/- 0.40 | [This](https://github.com/fandreuz/jdk-stuff/blob/master/script) is the script I used. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3177333952 From ihse at openjdk.org Tue Aug 12 10:52:23 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Tue, 12 Aug 2025 10:52:23 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 22:11:32 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - magic number: 400 > - inline Can you re-run the test with your updated and more stable testing setup with a default, out-of-the-box configured `server` variant, comparing the baseline PCH file with your updated one? Your updated result seemed more reliable and probable, but they also do not differ that much from the baseline. I still saw a few improvements and no regression, so it might still be worth pursuing, but maybe your suggested change does not bring as much improvement as was first hinted at. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3178797213 PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3178802150 From rmarchenko at openjdk.org Tue Aug 12 10:58:48 2025 From: rmarchenko at openjdk.org (Roman Marchenko) Date: Tue, 12 Aug 2025 10:58:48 GMT Subject: RFR: 8365098: make/RunTests.gmk generates a wrong path to test artifacts on Alpine Message-ID: <-fks-fcgy-zpsE8qbIjkriUHsKFB6Hwn-JMX6yOrYYM=.e8e1a8b8-e8cd-4c40-99bf-3db375074de8@github.com> This change fixes the test artifact path on Alpine as `'[_*1000]'` is not recognized as a correct pattern, at least on Alpine 3.11. BTW I'm not sure what `[_*1000]` is supposed to do, I guess it doesn't work as expected, regardless it's ok on most Linux. Without this fix, on Alpine the command `make test-prebuilt` generated paths like the following: Test report is stored in build/run-test-prebuilt/test-results/jtreg]test]hotspot]jtreg]tier1]common Now it looks better: Test report is stored in build/run-test-prebuilt/test-results/jtreg_test_hotspot_jtreg_tier1_common ------------- Commit messages: - 8365098: make/RunTests.gmk generates a wrong path to test artifacts on Alpine Changes: https://git.openjdk.org/jdk/pull/26742/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26742&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8365098 Stats: 3 lines in 1 file changed: 0 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/26742.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26742/head:pull/26742 PR: https://git.openjdk.org/jdk/pull/26742 From duke at openjdk.org Tue Aug 12 11:32:42 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Tue, 12 Aug 2025 11:32:42 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v11] In-Reply-To: References: Message-ID: <-Sya8z4PLvQEJQO1dWl5a31ZEFBg5eBrzUjSv5PVGNo=.0e9484ba-8a5e-475a-abd6-05b6e441bd4c@github.com> > In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. > > These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. > > > linux-x64 GCC > master real 81.39 user 3352.15 sys 287.49 > JDK-8365053 real 81.94 user 3030.24 sys 295.82 > > linux-x64 Clang > master real 43.44 user 2082.93 sys 130.70 > JDK-8365053 real 38.44 user 1723.80 sys 117.68 > > linux-aarch64 GCC > master real 1188.08 user 2015.22 sys 175.53 > JDK-8365053 real 1019.85 user 1667.45 sys 171.86 > > linux-aarch64 clang > master real 981.77 user 1645.05 sys 118.60 > JDK-8365053 real 791.96 user 1262.92 sys 101.50 Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: - conditional includes - variants ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26681/files - new: https://git.openjdk.org/jdk/pull/26681/files/be25d341..c0b8c277 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=10 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26681&range=09-10 Stats: 119 lines in 2 files changed: 114 ins; 1 del; 4 mod Patch: https://git.openjdk.org/jdk/pull/26681.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26681/head:pull/26681 PR: https://git.openjdk.org/jdk/pull/26681 From duke at openjdk.org Tue Aug 12 12:30:18 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Tue, 12 Aug 2025 12:30:18 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v10] In-Reply-To: References: Message-ID: <8AAOto8QChuSmsPAhI98ld31aUpETaWhOL27HCnUPOg=.f2d82805-0d57-4aea-b2b1-646cd3296fb5@github.com> On Tue, 12 Aug 2025 10:49:19 GMT, Magnus Ihse Bursie wrote: > Your updated result seemed more reliable and probable, but they also do not differ that much from the baseline. I still saw a few improvements and no regression, so it might still be worth pursuing, but maybe your suggested change does not bring as much improvement as was first hinted at. I'd say individual improvements are a bit harder to observe in the kind of measurements I'm doing now, and the likelihood of measuring noise is higher. Also, the minimum inclusion threshold I'm using now is the same for all features, but that's unlikely to be optimal. Maybe we could revert to the original approach (count inclusion for a typical build)? That proved to improve compile time, and I could hide non-standard headers behind an `#if`. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3179118681 From davidalayachew at gmail.com Tue Aug 12 00:16:45 2025 From: davidalayachew at gmail.com (David Alayachew) Date: Mon, 11 Aug 2025 20:16:45 -0400 Subject: Got a warning treated as an error -- should I keep trying to build? And if so, how? Message-ID: Hello Build Dev Team, I was trying to build the Valhalla repository off of the lworld branch, but I ran into the following build error. I went through the directions on this link -- https://openjdk.org/groups/build/doc/building.html I went through the trouble-shooting section as well. It had useful information, but nothing that clearly moved me forward. I successfully ran bash configure. Here is the final output section ==================================================== A new configuration has been successfully created in /home/david/valhalla/build/windows-x86_64-server-release using default settings. Configuration summary: * Name: windows-x86_64-server-release * Debug level: release * HS debug level: product * JVM variants: server * JVM features: server: 'cds compiler1 compiler2 epsilongc g1gc jfr jni-check jvmci jvmti management parallelgc serialgc services shenandoahgc vm-structs zgc' * OpenJDK target: OS: windows, CPU architecture: x86, address length: 64 * Version string: 25-internal-adhoc.david.valhalla (25-internal) * Source date: 1754954438 (2025-08-11T23:20:38Z) Tools summary: * Environment: cygwin version 3.6.4-1.x86_64, 2025-07-15 07:55 UTC; windows version 10.0.26100.4652; prefix "/cygdrive"; root "C:\cygwin64" * Boot JDK: openjdk version "25-ea" 2025-09-16 OpenJDK Runtime Environment (build 25-ea+34-3482) OpenJDK 64-Bit Server VM (build 25-ea+34-3482, mixed mode, sharing) (at /cygdrive/c/users/david/_workspace_new/_programming/_jdk/jdk-25) * Toolchain: microsoft (Microsoft Visual Studio 2022) * C Compiler: Version 19.44.35214 (at /cygdrive/c/progra~1/micros~4/2022/commun~1/vc/tools/msvc/1444~1.352/bin/hostx64/x64/cl.exe) * C++ Compiler: Version 19.44.35214 (at /cygdrive/c/progra~1/micros~4/2022/commun~1/vc/tools/msvc/1444~1.352/bin/hostx64/x64/cl.exe) Build performance summary: * Build jobs: 8 * Memory limit: 15605 MB And here is the output for the make images command. Creating support/modules_cmds/jdk.jlink/jlink.exe from 1 file(s) Creating support/modules_cmds/jdk.jpackage/jpackage.exe from 1 file(s) Creating jdk/modules/jdk.jpackage/jdk/jpackage/internal/resources/jpackageapplauncher.exe from 24 file(s) Creating support/modules_libs/jdk.jpackage/jpackage.dll from 23 file(s) Creating support/modules_cmds/jdk.jlink/jmod.exe from 1 file(s) Creating jdk/modules/jdk.jpackage/jdk/jpackage/internal/resources/wixhelper.dll from 19 file(s) Creating jdk/modules/jdk.jpackage/jdk/jpackage/internal/resources/msiwrapper.exe from 18 file(s) Creating support/modules_cmds/jdk.jshell/jshell.exe from 1 file(s) Creating jdk/modules/jdk.jpackage/jdk/jpackage/internal/resources/jpackageapplauncherw.exe from 24 file(s) Creating support/modules_cmds/jdk.jstatd/jstatd.exe from 1 file(s) C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(184): error C2220: the following warning is treated as an error C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(184): warning C5287: operands are different enum types '' and ''; use an explicit cast to silence this warning C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(184): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(186): warning C5287: operands are different enum types '' and ''; use an explicit cast to silence this warning C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(186): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(188): warning C5287: operands are different enum types '' and ''; use an explicit cast to silence this warning C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(188): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings make[3]: *** [modules/jdk.jdwp.agent/Lib.gmk:55: /home/david/valhalla/build/windows-x86_64-server-release/support/native/jdk.jdwp.agent/libjdwp/debugInit.obj] Error 1 make[3]: *** Waiting for unfinished jobs.... Creating support/modules_libs/jdk.net/extnet.dll from 1 file(s) Creating support/modules_libs/jdk.security.auth/jaas.dll from 1 file(s) Updating images/sec-bin.zip Updating images/sec-windows-bin.zip make[2]: *** [make/Main.gmk:182: jdk.jdwp.agent-libs] Error 2 make[2]: *** Waiting for unfinished jobs.... Updating images/jgss-windows-x64-bin.zip ERROR: Build failed for target 'images' in configuration 'windows-x86_64-server-release' (exit code 2) === Output from failing command(s) repeated here === * For target support_native_jdk.jdwp.agent_libjdwp_debugInit.obj: debugInit.c C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(184): error C2220: the following warning is treated as an error C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(184): warning C5287: operands are different enum types '' and ''; use an explicit cast to silence this warning C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(184): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(186): warning C5287: operands are different enum types '' and ''; use an explicit cast to silence this warning C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(186): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(188): warning C5287: operands are different enum types '' and ''; use an explicit cast to silence this warning C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(188): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings ... (rest of output omitted) * All command lines available in /home/david/valhalla/build/windows-x86_64-server-release/make-support/failure-logs. === End of repeated output === No indication of failed target found. HELP: Try searching the build log for '] Error'. HELP: Run 'make doctor' to diagnose build problems. make[1]: *** [/home/david/valhalla/make/Init.gmk:144: main] Error 2 make: *** [/home/david/valhalla/make/PreInit.gmk:158: images] Error 2 Thank you for your time and help. David Alayachew -------------- next part -------------- An HTML attachment was scrubbed... URL: From kim.barrett at oracle.com Tue Aug 12 14:45:46 2025 From: kim.barrett at oracle.com (Kim Barrett) Date: Tue, 12 Aug 2025 10:45:46 -0400 Subject: Got a warning treated as an error -- should I keep trying to build? And if so, how? In-Reply-To: References: Message-ID: On 8/11/25 8:16 PM, David Alayachew wrote: > Hello Build Dev Team, > > I was trying to build the Valhalla repository off of the lworld branch, but I ran into the following build error. > > I went through the directions on this link -- https://openjdk.org/groups/build/doc/building.html > > I went through the trouble-shooting section as well. It had useful information, but nothing that clearly moved me forward. [...] > C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(184): warning C5287: operands are different enum types '' and ''; use an explicit cast to silence this warning It looks like that was addressed in openjdk mainline here: https://github.com/openjdk/jdk/pull/25293 - integrated 2025-05-21 Maybe that change hasn't been merged into the valhalla repository? You can configure with --disable-warnings-as-error to suppress the error. From duke at openjdk.org Tue Aug 12 16:07:22 2025 From: duke at openjdk.org (Saint Wesonga) Date: Tue, 12 Aug 2025 16:07:22 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 06:30:16 GMT, Thomas Stuefe wrote: > So, we run gtests on Windows with `--gtest_catch_exceptions=0` which disables the inbuilt exception handler. > > See issues > > * https://bugs.openjdk.org/browse/JDK-8185734 > * https://bugs.openjdk.org/browse/JDK-8267138 (fixed an oversight in 8185734) > > See more details in my [PR description for 8185734](https://github.com/openjdk/jdk/pull/1757#issue-765285610), that's why this all sounded so familiar. > > The mechanism in place since 8267138 should be enough for my understanding. @swesonga, can you find out why this is not sufficient in your case? Is this option not passed on to your test? > > > That led me to wonder why, on Windows, we build libgtest and rebuild libjvm with exceptions enabled, by using -EHsc instead of no -EH option as done for the non-gtest libjvm? > > In the libjvm code itself, we don't use C++ exceptions, and we catch all Windows SEH with `__try`/`__except`. We also don't want standard stack unwinding with these signals. So no need for `/EHxx`. My assumption is that the gtest framework itself uses C++ exceptions and therefore needs `/EHsc`. The documentation is not super clear on some aspects of this (https://learn.microsoft.com/en-us/cpp/build/reference/eh-exception-handling-model), but it says that for standard C++ exceptions to work `/EHsc` is needed. > > > I was concerned that this might effectively undo JDK-8185734, since the suggestion in JBS was to conditionalize some code on GTEST_HAS_SEH being true. But it looks like the actual change didn't do that. > > In my PR for 8184734, I wrote: > > " In JBS, @kimbarrett suggested to build gtests with GTEST_HAS_SEH switched off to prevent gtest from using SEH. Unfortunately that won't work since the use of death tests means we need SEH. If we switch GTEST_HAS_SEH off, the death tests don't build. I also do not like this suggestion since this configuration may have a higher chance of bitrotting upstream." > > So it looks this was the first thing I tried back then, and it failed. Thank you for this detailed background and explanation. Turns out we have 2 separate gtest runs happening, one that matches the GitHub actions test you pointed out and another that doesn't have the `--gtest_catch_exceptions=0` flag. I was focused on the latter scenario but based on your explanation, the correct resolution is for us to not run gtests without that flag. I will close this pull request and update our test infrastructure to remove that scenario. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3180036471 From duke at openjdk.org Tue Aug 12 16:07:23 2025 From: duke at openjdk.org (Saint Wesonga) Date: Tue, 12 Aug 2025 16:07:23 GMT Subject: Withdrawn: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: On Wed, 6 Aug 2025 18:05:24 GMT, Saint Wesonga wrote: > https://github.com/openjdk/jdk/commit/0054bbed7fce5b8566655d6910b09b10c952e609 (from https://bugs.openjdk.org/browse/JDK-8343756) caused the gtest death tests to fail on Windows with the error message "Caught std::exception-derived exception escaping the death test statement. Exception message: unknown file: error: SEH exception with code 0xc0000005 thrown in the test body." The error message is from the catch block in https://github.com/google/googletest/blob/v1.14.0/googletest/include/gtest/internal/gtest-death-test-internal.h#L198-L212 > > In the failing death tests, the gtests start another process and expect the child process to be terminated by JVM error handling code. However, the structured exception handling code in the googletest code ends up getting executed instead. The death tests expect execution to continue after the instruction that triggered the exception by writing to the poissoned page. This change proposes build Windows gtests without structured exception handling to avoid changing the flow of exceptions in OpenJDK test code. The effect of this change is to stop using the [SEH path in the HandleSehExceptionsInMethodIfSupported method](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2603) and [directly start the test](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2612). > > All the Windows gtests now pass with this change. This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/jdk/pull/26661 From lkorinth at openjdk.org Tue Aug 12 17:09:32 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Tue, 12 Aug 2025 17:09:32 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 Message-ID: This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. These fixes have been created when I have ploughed through test cases: JDK-8352719: Add an equals sign to the modules statement JDK-8352709: Remove bad timing annotations from WhileOpTest.java JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE CODETOOLS-7903961: Make default timeout configurable After the review, I will update the copyrights. I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. I got 4 timing related faults: 1) runtime/Thread/TestThreadDumpMonitorContention.java This is probably: https://bugs.openjdk.org/browse/JDK-8361370 2) sun/tools/jhsdb/BasicLauncherTest.java I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. 3) gc/stress/TestReclaimStringsLeaksMemory.java I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. 4) sun/security/ssl/X509KeyManager/CertChecking.java This is a new test that I got on last rebase. I have added a timeout of 480 to it. In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >From the review of the cancelled "8356171: Increase timeout for test cases as preparation for change of default timeout factor", I have taken a few actions: 1) in testing(md|html): interpreted mode -> forced compilation mode 2) in MTTest.java: changed 1200 -> 400 (was 300 to begin with) I am now re-running tier 1-8. ------------- Commit messages: - 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 Changes: https://git.openjdk.org/jdk/pull/26749/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26749&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8260555 Stats: 598 lines in 297 files changed: 49 ins; 91 del; 458 mod Patch: https://git.openjdk.org/jdk/pull/26749.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26749/head:pull/26749 PR: https://git.openjdk.org/jdk/pull/26749 From cjplummer at openjdk.org Tue Aug 12 17:54:13 2025 From: cjplummer at openjdk.org (Chris Plummer) Date: Tue, 12 Aug 2025 17:54:13 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 In-Reply-To: References: Message-ID: On Tue, 12 Aug 2025 17:01:41 GMT, Leo Korinth wrote: > sun/tools/jhsdb/BasicLauncherTest.java > I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. @lkorinth Can you send me a link to the failure? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3180396310 From erikj at openjdk.org Tue Aug 12 20:12:10 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 12 Aug 2025 20:12:10 GMT Subject: RFR: 8365098: make/RunTests.gmk generates a wrong path to test artifacts on Alpine In-Reply-To: <-fks-fcgy-zpsE8qbIjkriUHsKFB6Hwn-JMX6yOrYYM=.e8e1a8b8-e8cd-4c40-99bf-3db375074de8@github.com> References: <-fks-fcgy-zpsE8qbIjkriUHsKFB6Hwn-JMX6yOrYYM=.e8e1a8b8-e8cd-4c40-99bf-3db375074de8@github.com> Message-ID: On Tue, 12 Aug 2025 10:51:06 GMT, Roman Marchenko wrote: > This change fixes the test artifact path on Alpine as `'[_*1000]'` is not recognized as a correct pattern, at least on Alpine 3.11. > > Without this fix, on Alpine the command `make test-prebuilt` generated paths like the following: > > Test report is stored in build/run-test-prebuilt/test-results/jtreg]test]hotspot]jtreg]tier1]common > > > Now it looks better: > > Test report is stored in build/run-test-prebuilt/test-results/jtreg_test_hotspot_jtreg_tier1_common > > All checks (tier1) are passed. The explanation for this can be found here: https://mail.openjdk.org/pipermail/build-dev/2017-November/020334.html Given that we are no longer supporting Solaris in mainline, it should be ok to remove it. ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26742#pullrequestreview-3112620484 From syan at openjdk.org Wed Aug 13 01:50:14 2025 From: syan at openjdk.org (SendaoYan) Date: Wed, 13 Aug 2025 01:50:14 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 In-Reply-To: References: Message-ID: On Tue, 12 Aug 2025 17:01:41 GMT, Leo Korinth wrote: > This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) > > In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). > > My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. > > These fixes have been created when I have ploughed through test cases: > JDK-8352719: Add an equals sign to the modules statement > JDK-8352709: Remove bad timing annotations from WhileOpTest.java > JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test > CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE > CODETOOLS-7903961: Make default timeout configurable > > After the review, I will update the copyrights. > > I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. > > I got 4 timing related faults: > 1) runtime/Thread/TestThreadDumpMonitorContention.java > This is probably: https://bugs.openjdk.org/browse/JDK-8361370 > 2) sun/tools/jhsdb/BasicLauncherTest.java > I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. > 3) gc/stress/TestReclaimStringsLeaksMemory.java > I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. > 4) sun/security/ssl/X509KeyManager/CertChecking.java > This is a new test that I got on last rebase. I have added a timeout of 480 to it. > > In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. > > From the review of the cancelled "8356171: Increase timeout for test cases as preparation for change of... test/hotspot/jtreg/compiler/c1/TestPinnedIntrinsics.java line 25: > 23: > 24: /* > 25: * @test Should we need to update the copyright year for the touch files ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2271883564 From syan at openjdk.org Wed Aug 13 01:54:16 2025 From: syan at openjdk.org (SendaoYan) Date: Wed, 13 Aug 2025 01:54:16 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 In-Reply-To: References: Message-ID: On Tue, 12 Aug 2025 17:01:41 GMT, Leo Korinth wrote: > This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) > > In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). > > My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. > > These fixes have been created when I have ploughed through test cases: > JDK-8352719: Add an equals sign to the modules statement > JDK-8352709: Remove bad timing annotations from WhileOpTest.java > JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test > CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE > CODETOOLS-7903961: Make default timeout configurable > > After the review, I will update the copyrights. > > I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. > > I got 4 timing related faults: > 1) runtime/Thread/TestThreadDumpMonitorContention.java > This is probably: https://bugs.openjdk.org/browse/JDK-8361370 > 2) sun/tools/jhsdb/BasicLauncherTest.java > I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. > 3) gc/stress/TestReclaimStringsLeaksMemory.java > I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. > 4) sun/security/ssl/X509KeyManager/CertChecking.java > This is a new test that I got on last rebase. I have added a timeout of 480 to it. > > In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. > > From the review of the cancelled "8356171: Increase timeout for test cases as preparation for change of... test/hotspot/jtreg/compiler/c2/TestStressRecompilation.java line 29: > 27: * @requires vm.debug > 28: * @summary Test running with StressRecompilation enabled. > 29: * @run main/othervm/timeout=480 -Xcomp -XX:+IgnoreUnrecognizedVMOptions -XX:+StressRecompilation I think the default value(120s) will be enough? On my machine this test use 11.546 senonds to finish. > grep "elapsed time" tmp/compiler/classUnloading/methodUnloading/TestOverloadCompileQueues.jtr -rn 55:elapsed time (seconds): 0.581 66:elapsed time (seconds): 0.575 116:elapsed time (seconds): 3.088 162:elapsed time (seconds): 0.001 173:elapsed time (seconds): 11.546 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2271888024 From sspitsyn at openjdk.org Wed Aug 13 07:29:11 2025 From: sspitsyn at openjdk.org (Serguei Spitsyn) Date: Wed, 13 Aug 2025 07:29:11 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 In-Reply-To: References: Message-ID: On Tue, 12 Aug 2025 17:01:41 GMT, Leo Korinth wrote: > This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) > > In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). > > My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. > > These fixes have been created when I have ploughed through test cases: > JDK-8352719: Add an equals sign to the modules statement > JDK-8352709: Remove bad timing annotations from WhileOpTest.java > JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test > CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE > CODETOOLS-7903961: Make default timeout configurable > > After the review, I will update the copyrights. > > I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. > > I got 4 timing related faults: > 1) runtime/Thread/TestThreadDumpMonitorContention.java > This is probably: https://bugs.openjdk.org/browse/JDK-8361370 > 2) sun/tools/jhsdb/BasicLauncherTest.java > I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. > 3) gc/stress/TestReclaimStringsLeaksMemory.java > I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. > 4) sun/security/ssl/X509KeyManager/CertChecking.java > This is a new test that I got on last rebase. I have added a timeout of 480 to it. > > In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. > > From the review of the cancelled "8356171: Increase timeout for test cases as preparation for change of... I've reviewed the Serviceability related tweaks and I'm okay with them in general. But I'm curious if you do not see any timeouts with this anymore. ------------- Marked as reviewed by sspitsyn (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26749#pullrequestreview-3114280042 From jlahoda at openjdk.org Wed Aug 13 08:11:26 2025 From: jlahoda at openjdk.org (Jan Lahoda) Date: Wed, 13 Aug 2025 08:11:26 GMT Subject: Integrated: 8362885: A more formal way to mark javac's Flags that belong to a specific Symbol type only In-Reply-To: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> References: <8B8_WIT1TzNgILQss3jwRNRWunfzR2NTBL4hIPIUfDw=.534128fd-533a-4356-9e15-b3065d92dd16@github.com> Message-ID: On Thu, 24 Jul 2025 07:21:12 GMT, Jan Lahoda wrote: > This PR proposes to improve handling of javac's `Flags` in two ways: > - for each flag, there's now an informational annotation specifying what is the target Symbol type. Only targets right now are `TypeSymbol`s, `MethodSymbol`s and `VarSymbol`s. If we ran out of flags for `TypeSymbol`s, we could split those to module/package/class/type variable, but it does not seem to be quite necessary yet. There's an auxiliary special `BLOCK`, which is for `JCBlock`. > - the manually handled `Flags.Flag` enum is replaced with autogenerated `FlagsEnum` > > This is inspired by: > https://github.com/openjdk/jdk/pull/26181#pullrequestreview-2997428662 > > There may be some better to handle `Flags` eventually, but this hopefully improves the current situation at least somewhat, by providing more formal way to say the flags' target, and restricting the need to read comments and search for free flags. > > As a side-effect of this annotation, the `test/langtools/tools/javac/flags/FlagsTest.java` now also prints which flags are free, for each Symbol type. > > (I will remove the `build` label for now, until discussion on javac level is done, and will re-add it if we decide the goal to autogenerate the FlagsEnum makes sense.) This pull request has now been integrated. Changeset: 72e22b4d Author: Jan Lahoda URL: https://git.openjdk.org/jdk/commit/72e22b4de59a18f83c75be9a51fd99726f77f6f6 Stats: 495 lines in 8 files changed: 362 ins; 80 del; 53 mod 8362885: A more formal way to mark javac's Flags that belong to a specific Symbol type only Reviewed-by: ihse, liach, vromero, mcimadamore, erikj ------------- PR: https://git.openjdk.org/jdk/pull/26452 From aturbanov at openjdk.org Wed Aug 13 09:47:17 2025 From: aturbanov at openjdk.org (Andrey Turbanov) Date: Wed, 13 Aug 2025 09:47:17 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 In-Reply-To: References: Message-ID: On Tue, 12 Aug 2025 17:01:41 GMT, Leo Korinth wrote: > This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) > > In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). > > My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. > > These fixes have been created when I have ploughed through test cases: > JDK-8352719: Add an equals sign to the modules statement > JDK-8352709: Remove bad timing annotations from WhileOpTest.java > JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test > CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE > CODETOOLS-7903961: Make default timeout configurable > > After the review, I will update the copyrights. > > I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. > > I got 4 timing related faults: > 1) runtime/Thread/TestThreadDumpMonitorContention.java > This is probably: https://bugs.openjdk.org/browse/JDK-8361370 > 2) sun/tools/jhsdb/BasicLauncherTest.java > I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. > 3) gc/stress/TestReclaimStringsLeaksMemory.java > I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. > 4) sun/security/ssl/X509KeyManager/CertChecking.java > This is a new test that I got on last rebase. I have added a timeout of 480 to it. > > In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. > > From the review of the cancelled "8356171: Increase timeout for test cases as preparation for change of... test/langtools/tools/lib/toolbox/ToolBox.java line 480: > 478: > 479: private static final int RETRY_DELETE_MILLIS = isWindows() ? 500 : 0; > 480: private static final int MAX_RETRY_DELETE_MILLIS = isWindows() ? 60 * 1000 : 0; Suggestion: private static final int MAX_RETRY_DELETE_MILLIS = isWindows() ? 60 * 1000 : 0; ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2272745651 From stuefe at openjdk.org Wed Aug 13 10:01:20 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Wed, 13 Aug 2025 10:01:20 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: On Tue, 12 Aug 2025 16:04:06 GMT, Saint Wesonga wrote: >> So, we run gtests on Windows with `--gtest_catch_exceptions=0` which disables the inbuilt exception handler. >> >> See issues >> - https://bugs.openjdk.org/browse/JDK-8185734 >> - https://bugs.openjdk.org/browse/JDK-8267138 (fixed an oversight in 8185734) >> >> See more details in my [PR description for 8185734](https://github.com/openjdk/jdk/pull/1757#issue-765285610), that's why this all sounded so familiar. >> >> The mechanism in place since 8267138 should be enough for my understanding. @swesonga, can you find out why this is not sufficient in your case? Is this option not passed on to your test? >> >>> That led me to wonder why, on Windows, we build libgtest and rebuild libjvm with exceptions enabled, by using -EHsc instead of no -EH option as done for the non-gtest libjvm? >> >> In the libjvm code itself, we don't use C++ exceptions, and we catch all Windows SEH with `__try`/`__except`. We also don't want standard stack unwinding with these signals. So no need for `/EHxx`. My assumption is that the gtest framework itself uses C++ exceptions and therefore needs `/EHsc`. The documentation is not super clear on some aspects of this (https://learn.microsoft.com/en-us/cpp/build/reference/eh-exception-handling-model), but it says that for standard C++ exceptions to work `/EHsc` is needed. >> >>> I was concerned that this might effectively undo JDK-8185734, since the suggestion in JBS was to conditionalize some code on GTEST_HAS_SEH being true. But it looks like the actual change didn't do that. >> >> In my PR for 8184734, I wrote: >> >> " In JBS, @kimbarrett suggested to build gtests with GTEST_HAS_SEH switched off to prevent gtest from using SEH. Unfortunately that won't work since the use of death tests means we need SEH. If we switch GTEST_HAS_SEH off, the death tests don't build. I also do not like this suggestion since this configuration may have a higher chance of bitrotting upstream." >> >> So it looks this was the first thing I tried back then, and it failed. > >> So, we run gtests on Windows with `--gtest_catch_exceptions=0` which disables the inbuilt exception handler. >> >> See issues >> >> * https://bugs.openjdk.org/browse/JDK-8185734 >> * https://bugs.openjdk.org/browse/JDK-8267138 (fixed an oversight in 8185734) >> >> See more details in my [PR description for 8185734](https://github.com/openjdk/jdk/pull/1757#issue-765285610), that's why this all sounded so familiar. >> >> The mechanism in place since 8267138 should be enough for my understanding. @swesonga, can you find out why this is not sufficient in your case? Is this option not passed on to your test? >> >> > That led me to wonder why, on Windows, we build libgtest and rebuild libjvm with exceptions enabled, by using -EHsc instead of no -EH option as done for the non-gtest libjvm? >> >> In the libjvm code itself, we don't use C++ exceptions, and we catch all Windows SEH with `__try`/`__except`. We also don't want standard stack unwinding with these signals. So no need for `/EHxx`. My assumption is that the gtest framework itself uses C++ exceptions and therefore needs `/EHsc`. The documentation is not super clear on some aspects of this (https://learn.microsoft.com/en-us/cpp/build/reference/eh-exception-handling-model), but it says that for standard C++ exceptions to work `/EHsc` is needed. >> >> > I was concerned that this might effectively undo JDK-8185734, since the suggestion in JBS was to conditionalize some code on GTEST_HAS_SEH being true. But it looks like the actual change didn't do that. >> >> In my PR for 8184734, I wrote: >> >> " In JBS, @kimbarrett suggested to build gtests with GTEST_HAS_SEH switched off to prevent gtest from using SEH. Unfortunately that won't work since the use of death tests means we need SEH. If we switch GTEST_HAS_SEH off, the death tests don't build. I also do not like this suggestion since this configuration may have a higher chance of bitrotting upstream." >> >> So it looks this was the first thing I tried back then, and it failed. > > Thank you for this detailed background and explanation. Turns out we have 2 separate gtest runs happening, one that matches the GitHub actions test you pointed out and another that doesn't have the `--gtest_catch_exceptions=0` flag. I was focused on the latter scenario but based on your explanation, the correct resolution is for us to not run gtests without that flag. I will close this pull request and update our test infrastructure to remove that scenario. @swesonga Thank you for the update! Good to see that we have understood everything. I admit having to control this externally instead of having this knowledge baked into the launcher at build time is less satisfactory. What would be helpful would be if we could have a warning in the test when running on Windows. Edit: Also, good analysis, sorry that it did not result in a patch. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3183089466 From lkorinth at openjdk.org Wed Aug 13 13:09:13 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Wed, 13 Aug 2025 13:09:13 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 01:47:43 GMT, SendaoYan wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > test/hotspot/jtreg/compiler/c1/TestPinnedIntrinsics.java line 25: > >> 23: >> 24: /* >> 25: * @test > > Should we need to update the copyright year for the touched files `After the review, I will update the copyrights.` It is IMO easier to review big changes without the noise. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2273410872 From lkorinth at openjdk.org Wed Aug 13 13:21:11 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Wed, 13 Aug 2025 13:21:11 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 In-Reply-To: References: Message-ID: <4q0047gChugbkkv-W0lis2E8nXVWh8YGVJiBehoojLY=.0b9055a2-f038-4247-82a9-7c60ee9f6637@github.com> On Tue, 12 Aug 2025 17:52:02 GMT, Chris Plummer wrote: > > sun/tools/jhsdb/BasicLauncherTest.java > > I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. > > @lkorinth Can you send me a link to the failure? I sent it to you on email. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3183896453 From erikj at openjdk.org Wed Aug 13 13:28:18 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 13 Aug 2025 13:28:18 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 In-Reply-To: References: Message-ID: On Tue, 12 Aug 2025 17:01:41 GMT, Leo Korinth wrote: > This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) > > In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). > > My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. > > These fixes have been created when I have ploughed through test cases: > JDK-8352719: Add an equals sign to the modules statement > JDK-8352709: Remove bad timing annotations from WhileOpTest.java > JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test > CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE > CODETOOLS-7903961: Make default timeout configurable > > After the review, I will update the copyrights. > > I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. > > I got 4 timing related faults: > 1) runtime/Thread/TestThreadDumpMonitorContention.java > This is probably: https://bugs.openjdk.org/browse/JDK-8361370 > 2) sun/tools/jhsdb/BasicLauncherTest.java > I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. > 3) gc/stress/TestReclaimStringsLeaksMemory.java > I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. > 4) sun/security/ssl/X509KeyManager/CertChecking.java > This is a new test that I got on last rebase. I have added a timeout of 480 to it. > > In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. > > From the review of the cancelled "8356171: Increase timeout for test cases as preparation for change of... make/RunTests.gmk line 939: > 937: > 938: JTREG_AUTO_PROBLEM_LISTS := > 939: JTREG_AUTO_TIMEOUT_FACTOR := 1 # IT MAKES NO SENCE TO CHANGE IT. Fix individual test cases that time out instead. I'm not sure about this comment, but if we keep it, please move it to the line above and break lines as appropriate. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2273468852 From mhaessig at openjdk.org Wed Aug 13 13:30:47 2025 From: mhaessig at openjdk.org (Manuel =?UTF-8?B?SMOkc3NpZw==?=) Date: Wed, 13 Aug 2025 13:30:47 GMT Subject: RFR: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension Message-ID: This PR adds a basic configuration for the [Oracle Java VSCode extension](https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java) to the `vscode-project-*` targets. ------------- Commit messages: - make/ide/vscode: add basic configuration for Oracle Java extension Changes: https://git.openjdk.org/jdk/pull/26759/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26759&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8365491 Stats: 5 lines in 1 file changed: 5 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/26759.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26759/head:pull/26759 PR: https://git.openjdk.org/jdk/pull/26759 From lkorinth at openjdk.org Wed Aug 13 13:36:13 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Wed, 13 Aug 2025 13:36:13 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 01:51:44 GMT, SendaoYan wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > test/hotspot/jtreg/compiler/c2/TestStressRecompilation.java line 29: > >> 27: * @requires vm.debug >> 28: * @summary Test running with StressRecompilation enabled. >> 29: * @run main/othervm/timeout=480 -Xcomp -XX:+IgnoreUnrecognizedVMOptions -XX:+StressRecompilation > > I think the default value(120s) will be enough? On my machine this test use 11.546 senonds to finish. > > >> grep "elapsed time" tmp/compiler/classUnloading/methodUnloading/TestOverloadCompileQueues.jtr -rn > 55:elapsed time (seconds): 0.581 > 66:elapsed time (seconds): 0.575 > 116:elapsed time (seconds): 3.088 > 162:elapsed time (seconds): 0.001 > 173:elapsed time (seconds): 11.546 I have only (to my knowledge) updated test cases that has timed out for me. We have some not very modern test machines that is slower. That in combination with a debug build, in combination with a timeout factor of 0.7 might have made the test time out. Unfortunately I no longer have the logs for this failure so I can not check if the machine was failing because it was low on memory etc. I still think it is reasonable to keep the old timeout of 480. I have no intuitive feeling for how expensive `-XX:+StressRecompilation` is. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2273488236 From lkorinth at openjdk.org Wed Aug 13 13:53:12 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Wed, 13 Aug 2025 13:53:12 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 In-Reply-To: References: Message-ID: <5nc1SBXnwAOJJvnrbMyPIsre61u--GxMHSffdDf8qUU=.77100025-4b9e-4e0a-b71d-df590df5f9ba@github.com> On Wed, 13 Aug 2025 07:26:59 GMT, Serguei Spitsyn wrote: > I've reviewed the Serviceability related tweaks and I'm okay with them in general. But I'm curious if you do not see any timeouts with this anymore. I only got the four timeouts described in the description, I got a few other failures as well that was not timeout related. I sent you a link to the test results in an email. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3184026177 From jlahoda at openjdk.org Wed Aug 13 14:11:10 2025 From: jlahoda at openjdk.org (Jan Lahoda) Date: Wed, 13 Aug 2025 14:11:10 GMT Subject: RFR: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension In-Reply-To: References: Message-ID: <99y0kw0loER23cXnLl2k88BEVY7XorBViF6SGADgNRY=.09ee46af-2a6b-4c95-8d26-f76117bb1f7f@github.com> On Wed, 13 Aug 2025 13:22:21 GMT, Manuel H?ssig wrote: > This PR adds a basic configuration for the [Oracle Java VSCode extension](https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java) to the `vscode-project-*` targets. Looks like a reasonable direction to me. I would suggest to drop: "jdk.advanced.disable.nbjavac": true, while it may be good for some, it may lead to surprising effects for others people that don't know about this setting. Also, including: "jdk.java.onSave.organizeImports": false might make sense. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26759#issuecomment-3184094444 From lkorinth at openjdk.org Wed Aug 13 14:22:08 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Wed, 13 Aug 2025 14:22:08 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v2] In-Reply-To: References: Message-ID: > This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) > > In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). > > My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. > > These fixes have been created when I have ploughed through test cases: > JDK-8352719: Add an equals sign to the modules statement > JDK-8352709: Remove bad timing annotations from WhileOpTest.java > JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test > CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE > CODETOOLS-7903961: Make default timeout configurable > > After the review, I will update the copyrights. > > I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. > > I got 4 timing related faults: > 1) runtime/Thread/TestThreadDumpMonitorContention.java > This is probably: https://bugs.openjdk.org/browse/JDK-8361370 > 2) sun/tools/jhsdb/BasicLauncherTest.java > I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. > 3) gc/stress/TestReclaimStringsLeaksMemory.java > I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. > 4) sun/security/ssl/X509KeyManager/CertChecking.java > This is a new test that I got on last rebase. I have added a timeout of 480 to it. > > In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. > > From the review of the cancelled "8356171: Increase timeout for test cases as preparation for change of... Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: After suggestions from Erik and Andrey ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26749/files - new: https://git.openjdk.org/jdk/pull/26749/files/ac47dbdc..dbe42964 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26749&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26749&range=00-01 Stats: 3 lines in 2 files changed: 1 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/26749.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26749/head:pull/26749 PR: https://git.openjdk.org/jdk/pull/26749 From lkorinth at openjdk.org Wed Aug 13 14:22:10 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Wed, 13 Aug 2025 14:22:10 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v2] In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 13:25:48 GMT, Erik Joelsson wrote: >> Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: >> >> After suggestions from Erik and Andrey > > make/RunTests.gmk line 939: > >> 937: >> 938: JTREG_AUTO_PROBLEM_LISTS := >> 939: JTREG_AUTO_TIMEOUT_FACTOR := 1 # IT MAKES NO SENCE TO CHANGE IT. Fix individual test cases that time out instead. > > I'm not sure about this comment, but if we keep it, please move it to the line above and break lines as appropriate. I updated it to "Please reach consensus before changing this. It was not easy changing it to a `1`. " I also did not break the comment as it was shorter than line 933 above it. Is it acceptable now? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2273621868 From lkorinth at openjdk.org Wed Aug 13 14:22:11 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Wed, 13 Aug 2025 14:22:11 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v2] In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 09:44:33 GMT, Andrey Turbanov wrote: >> Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: >> >> After suggestions from Erik and Andrey > > test/langtools/tools/lib/toolbox/ToolBox.java line 480: > >> 478: >> 479: private static final int RETRY_DELETE_MILLIS = isWindows() ? 500 : 0; >> 480: private static final int MAX_RETRY_DELETE_MILLIS = isWindows() ? 60 * 1000 : 0; > > Suggestion: > > private static final int MAX_RETRY_DELETE_MILLIS = isWindows() ? 60 * 1000 : 0; Fixed! ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2273614076 From mhaessig at openjdk.org Wed Aug 13 14:23:37 2025 From: mhaessig at openjdk.org (Manuel =?UTF-8?B?SMOkc3NpZw==?=) Date: Wed, 13 Aug 2025 14:23:37 GMT Subject: RFR: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension [v2] In-Reply-To: References: Message-ID: <_HedHy5F966CKB-J_xRbvt_gLfCk9BIlNvk5H5WpwHc=.2b9e787f-64be-4cb5-9ce4-5c6907ac4b28@github.com> > This PR adds a basic configuration for the [Oracle Java VSCode extension](https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java) to the `vscode-project-*` targets. Manuel H?ssig has updated the pull request incrementally with one additional commit since the last revision: Prevent organizing imports ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26759/files - new: https://git.openjdk.org/jdk/pull/26759/files/6a4d9efb..277a590d Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26759&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26759&range=00-01 Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/26759.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26759/head:pull/26759 PR: https://git.openjdk.org/jdk/pull/26759 From fgao at openjdk.org Wed Aug 13 14:25:26 2025 From: fgao at openjdk.org (Fei Gao) Date: Wed, 13 Aug 2025 14:25:26 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern Message-ID: `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. I did not encounter similar problems when building with Clang-16 [6]. This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding Testing (combined with https://github.com/openjdk/jdk/pull/26577): 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh [5] https://bugs.openjdk.org/browse/JDK-8364185 [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html ------------- Commit messages: - 8365312: __builtin_clear_padding not supported for variable length aggregates Changes: https://git.openjdk.org/jdk/pull/26755/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26755&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8365312 Stats: 11 lines in 1 file changed: 11 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/26755.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26755/head:pull/26755 PR: https://git.openjdk.org/jdk/pull/26755 From mhaessig at openjdk.org Wed Aug 13 14:27:12 2025 From: mhaessig at openjdk.org (Manuel =?UTF-8?B?SMOkc3NpZw==?=) Date: Wed, 13 Aug 2025 14:27:12 GMT Subject: RFR: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension In-Reply-To: <99y0kw0loER23cXnLl2k88BEVY7XorBViF6SGADgNRY=.09ee46af-2a6b-4c95-8d26-f76117bb1f7f@github.com> References: <99y0kw0loER23cXnLl2k88BEVY7XorBViF6SGADgNRY=.09ee46af-2a6b-4c95-8d26-f76117bb1f7f@github.com> Message-ID: On Wed, 13 Aug 2025 14:08:56 GMT, Jan Lahoda wrote: > I would suggest to drop: `"jdk.advanced.disable.nbjavac": true,` Can you elaborate on the surprising results? When developing the JDK we will most probably use features not supported by the `nbjavac`. > Also, including:`"jdk.java.onSave.organizeImports": false` might make sense. Good point. That will lead to unwanted changes if true. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26759#issuecomment-3184151430 From fgao at openjdk.org Wed Aug 13 14:31:10 2025 From: fgao at openjdk.org (Fei Gao) Date: Wed, 13 Aug 2025 14:31:10 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 09:16:15 GMT, Fei Gao wrote: > `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. > > `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. > > Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. > > I did not encounter similar problems when building with Clang-16 [6]. > > This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding > > Testing (combined with https://github.com/openjdk/jdk/pull/26577): > 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 > 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines > > [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init > [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed > [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html > [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh > [5] https://bugs.openjdk.org/browse/JDK-8364185 > [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html HI @jaikiran , could you please help test the combination of this PR and https://github.com/openjdk/jdk/pull/26577 in your CI? It would be very helpful to verify them together. Thanks in advance! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26755#issuecomment-3184170316 From jpai at openjdk.org Wed Aug 13 15:55:11 2025 From: jpai at openjdk.org (Jaikiran Pai) Date: Wed, 13 Aug 2025 15:55:11 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 14:28:56 GMT, Fei Gao wrote: >> `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. >> >> `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. >> >> Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. >> >> I did not encounter similar problems when building with Clang-16 [6]. >> >> This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding >> >> Testing (combined with https://github.com/openjdk/jdk/pull/26577): >> 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 >> 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines >> >> [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init >> [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed >> [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html >> [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh >> [5] https://bugs.openjdk.org/browse/JDK-8364185 >> [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html > > HI @jaikiran , could you please help test the combination of this PR and https://github.com/openjdk/jdk/pull/26577 in your CI? It would be very helpful to verify them together. Thanks in advance! Hello @fg1417, > HI @jaikiran , could you please help test the combination of this PR and #26577 in your CI? It would be very helpful to verify them together. Thanks in advance! I have triggered a tier1, tier2, tier3 run in our CI with the changes in this PR and the ones in https://github.com/openjdk/jdk/pull/26577, on top of latest JDK master branch. The tests take a while to complete and I will update this PR once I have the results. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26755#issuecomment-3184481047 From erikj at openjdk.org Wed Aug 13 20:35:10 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Wed, 13 Aug 2025 20:35:10 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 09:16:15 GMT, Fei Gao wrote: > `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. > > `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. > > Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. > > I did not encounter similar problems when building with Clang-16 [6]. > > This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding > > Testing (combined with https://github.com/openjdk/jdk/pull/26577): > 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 > 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines > > [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init > [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed > [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html > [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh > [5] https://bugs.openjdk.org/browse/JDK-8364185 > [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html Looks ok from a build perspective pending test results from Jaikiran. ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26755#pullrequestreview-3117600475 From kbarrett at openjdk.org Thu Aug 14 06:51:17 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 14 Aug 2025 06:51:17 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 09:16:15 GMT, Fei Gao wrote: > `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. > > `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. > > Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. > > I did not encounter similar problems when building with Clang-16 [6]. > > This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding > > Testing (combined with https://github.com/openjdk/jdk/pull/26577): > 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 > 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines > > [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init > [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed > [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html > [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh > [5] https://bugs.openjdk.org/browse/JDK-8364185 > [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html Changes requested by kbarrett (Reviewer). make/autoconf/flags-cflags.m4 line 960: > 958: # avoids the use of unsupported `__builtin_clear_padding` for variable > 959: # length aggregates > 960: if test "x$TOOLCHAIN_TYPE" = xgcc ; then We only add `-ftrival-auto-var-init=pattern` when "x$DEBUG_LEVEL" != "xrelease", e.g. only in debug builds. I think we should only add the `=zero` flag in debug builds and nothing in release builds here too. ------------- PR Review: https://git.openjdk.org/jdk/pull/26755#pullrequestreview-3119223806 PR Review Comment: https://git.openjdk.org/jdk/pull/26755#discussion_r2275639166 From jpai at openjdk.org Thu Aug 14 07:40:17 2025 From: jpai at openjdk.org (Jaikiran Pai) Date: Thu, 14 Aug 2025 07:40:17 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 09:16:15 GMT, Fei Gao wrote: > `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. > > `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. > > Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. > > I did not encounter similar problems when building with Clang-16 [6]. > > This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding > > Testing (combined with https://github.com/openjdk/jdk/pull/26577): > 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 > 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines > > [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init > [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed > [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html > [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh > [5] https://bugs.openjdk.org/browse/JDK-8364185 > [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html tier1, tier2, tier3 testing of this and https://github.com/openjdk/jdk/pull/26577 completed without any related failures. Once the PR is approved (I see Kim has suggested some changes), I will run a final round of tests. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26755#issuecomment-3187299715 From davidalayachew at gmail.com Thu Aug 14 08:27:31 2025 From: davidalayachew at gmail.com (David Alayachew) Date: Thu, 14 Aug 2025 04:27:31 -0400 Subject: Got a warning treated as an error -- should I keep trying to build? And if so, how? In-Reply-To: References: Message-ID: Thanks, it worked! All I needed to do was run the flag you gave me on my bash configure, then reattempt the make images command, and it worked! Building the JDK has gotten easier than the last time I tried it. On Tue, Aug 12, 2025 at 10:46?AM Kim Barrett wrote: > On 8/11/25 8:16 PM, David Alayachew wrote: > > Hello Build Dev Team, > > > > I was trying to build the Valhalla repository off of the lworld branch, > but I ran into the following build error. > > > > I went through the directions on this link -- > https://openjdk.org/groups/build/doc/building.html < > https://openjdk.org/groups/build/doc/building.html> > > > > I went through the trouble-shooting section as well. It had useful > information, but nothing that clearly moved me forward. > [...] > > > > C:\cygwin64\home\david\valhalla\src\jdk.jdwp.agent\share\native\libjdwp\debugInit.c(184): > warning C5287: operands are different enum types > '' and > ''; use an explicit cast to > silence this warning > > It looks like that was addressed in openjdk mainline here: > https://github.com/openjdk/jdk/pull/25293 - integrated 2025-05-21 > Maybe that change hasn't been merged into the valhalla repository? > > You can configure with --disable-warnings-as-error to suppress the error. > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ihse at openjdk.org Thu Aug 14 09:16:20 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 09:16:20 GMT Subject: RFR: 8364664: gtest death tests failing on Windows In-Reply-To: References: Message-ID: On Wed, 6 Aug 2025 18:05:24 GMT, Saint Wesonga wrote: > https://github.com/openjdk/jdk/commit/0054bbed7fce5b8566655d6910b09b10c952e609 (from https://bugs.openjdk.org/browse/JDK-8343756) caused the gtest death tests to fail on Windows with the error message "Caught std::exception-derived exception escaping the death test statement. Exception message: unknown file: error: SEH exception with code 0xc0000005 thrown in the test body." The error message is from the catch block in https://github.com/google/googletest/blob/v1.14.0/googletest/include/gtest/internal/gtest-death-test-internal.h#L198-L212 > > In the failing death tests, the gtests start another process and expect the child process to be terminated by JVM error handling code. However, the structured exception handling code in the googletest code ends up getting executed instead. The death tests expect execution to continue after the instruction that triggered the exception by writing to the poissoned page. This change proposes build Windows gtests without structured exception handling to avoid changing the flow of exceptions in OpenJDK test code. The effect of this change is to stop using the [SEH path in the HandleSehExceptionsInMethodIfSupported method](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2603) and [directly start the test](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2612). > > All the Windows gtests now pass with this change. Is there some way we can patch the launcher to set this option automatically? I agree too that it is not ideal that the caller needs to know to pass it. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3187681378 From ihse at openjdk.org Thu Aug 14 09:31:17 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 09:31:17 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v11] In-Reply-To: <-Sya8z4PLvQEJQO1dWl5a31ZEFBg5eBrzUjSv5PVGNo=.0e9484ba-8a5e-475a-abd6-05b6e441bd4c@github.com> References: <-Sya8z4PLvQEJQO1dWl5a31ZEFBg5eBrzUjSv5PVGNo=.0e9484ba-8a5e-475a-abd6-05b6e441bd4c@github.com> Message-ID: On Tue, 12 Aug 2025 11:32:42 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - conditional includes > - variants If I recall correctly the original approach was even simpler: I counted the number of `#include`s in the C++ source files, not in the dependency files of a particular build. Crude but effective, and left out discussions about differences between platforms and feature configurations. And then I had to do some adjustments for Windows where my approach of excluding inline files did not hold and caused a regression. I think your approach seems more valid, but maybe we get stuck in details then instead... But then again, this is basically an optimization problem (even if it is not about running code in the JVM, but about optimizing build speed) so there is no way around the mantra of measure, measure and measure again. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3187744222 From ihse at openjdk.org Thu Aug 14 09:42:16 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 09:42:16 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v3] In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 19:32:39 GMT, Leonid Mesnik wrote: > Thank you feedback, I explained the usage of > JTREG_JVMTI_STRESS_AGENT > and applied your changes. I can't see any updates to this PR? Did you forget to push your commits? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26360#issuecomment-3187804873 From ihse at openjdk.org Thu Aug 14 09:46:12 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 09:46:12 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern In-Reply-To: References: Message-ID: <9e3JH2ZJGP1wW1i5pA56IHk2MKaOu-FTFv_xZrUlFu4=.5a879e52-753d-4b0d-b806-a9ae2de6104d@github.com> On Thu, 14 Aug 2025 06:46:46 GMT, Kim Barrett wrote: >> `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. >> >> `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. >> >> Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. >> >> I did not encounter similar problems when building with Clang-16 [6]. >> >> This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding >> >> Testing (combined with https://github.com/openjdk/jdk/pull/26577): >> 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 >> 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines >> >> [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init >> [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed >> [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html >> [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh >> [5] https://bugs.openjdk.org/browse/JDK-8364185 >> [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html > > make/autoconf/flags-cflags.m4 line 960: > >> 958: # avoids the use of unsupported `__builtin_clear_padding` for variable >> 959: # length aggregates >> 960: if test "x$TOOLCHAIN_TYPE" = xgcc ; then > > We only add `-ftrival-auto-var-init=pattern` when "x$DEBUG_LEVEL" != "xrelease", e.g. only in > debug builds. I think we should only add the `=zero` flag in debug builds and nothing in release > builds here too. I agree. Make sure to use the same test (DEBUG_LEVEL != release) to catch both fast and slow debug builds. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26755#discussion_r2276126511 From ihse at openjdk.org Thu Aug 14 09:50:12 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 09:50:12 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 09:55:20 GMT, Magnus Ihse Bursie wrote: > According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. > > I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. > > I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. @kimbarrett Any opinions? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3187826145 From ihse at openjdk.org Thu Aug 14 09:54:12 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 09:54:12 GMT Subject: RFR: 8365098: make/RunTests.gmk generates a wrong path to test artifacts on Alpine In-Reply-To: <-fks-fcgy-zpsE8qbIjkriUHsKFB6Hwn-JMX6yOrYYM=.e8e1a8b8-e8cd-4c40-99bf-3db375074de8@github.com> References: <-fks-fcgy-zpsE8qbIjkriUHsKFB6Hwn-JMX6yOrYYM=.e8e1a8b8-e8cd-4c40-99bf-3db375074de8@github.com> Message-ID: On Tue, 12 Aug 2025 10:51:06 GMT, Roman Marchenko wrote: > This change fixes the test artifact path on Alpine as `'[_*1000]'` is not recognized as a correct pattern, at least on Alpine 3.11. > > Without this fix, on Alpine the command `make test-prebuilt` generated paths like the following: > > Test report is stored in build/run-test-prebuilt/test-results/jtreg]test]hotspot]jtreg]tier1]common > > > Now it looks better: > > Test report is stored in build/run-test-prebuilt/test-results/jtreg_test_hotspot_jtreg_tier1_common > > All checks (tier1) are passed. LTGM. Actually, an improvement on all platforms, not only Alpine (sans Solaris...) ------------- Marked as reviewed by ihse (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26742#pullrequestreview-3119910398 From ihse at openjdk.org Thu Aug 14 09:54:14 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 09:54:14 GMT Subject: RFR: 8365098: make/RunTests.gmk generates a wrong path to test artifacts on Alpine In-Reply-To: References: <-fks-fcgy-zpsE8qbIjkriUHsKFB6Hwn-JMX6yOrYYM=.e8e1a8b8-e8cd-4c40-99bf-3db375074de8@github.com> Message-ID: On Tue, 12 Aug 2025 20:09:15 GMT, Erik Joelsson wrote: > The explanation for this can be found here: > https://mail.openjdk.org/pipermail/build-dev/2017-November/020334.html Thank you for digging that out! I was just about to check why in the world we could ever have written something so wonky. I had happily completely forgotten how I wrestled with bad tooling on Solaris. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26742#issuecomment-3187837407 From ihse at openjdk.org Thu Aug 14 09:57:14 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 09:57:14 GMT Subject: RFR: 8346719: Add relaunchers to the static JDK image for missing executables [v3] In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 17:20:30 GMT, Erik Joelsson wrote: >> This solution was modeled on how we create `module-included-libs.txt`. I agree that it is a bit hacky to inject this kind of stuff in ModuleWrapper, but I can't see how we can do it more cleanly. That's the only point at which we know the entire module for a phase. >> >> Maybe we can improve optics by doing a more official-looking "hook" for injecting functionality at pre-/post- whole-module processing? That would keep ModuleWrapper slimmer and without all the current specialized hooks, and make the name "wrapper" more relevant. >> >> Or, we could rename the makefile to indicate better that it does a lot more than just wraps a file. (I have no good suggestions right now.) > > I'm not sure what you mean here. I described a solution that keeps it in LauncherCommon without creating races. Aha, now I understand what you mean! My mind slipped -- I read `LauncherCommon.gmk` but thought `SetupBuildLauncher`. But you mean just store it in the top-level of the actual makefile that is included by all launchers. Yeah, that could definitely work. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24380#discussion_r2276155249 From duke at openjdk.org Thu Aug 14 10:00:10 2025 From: duke at openjdk.org (duke) Date: Thu, 14 Aug 2025 10:00:10 GMT Subject: RFR: 8365098: make/RunTests.gmk generates a wrong path to test artifacts on Alpine In-Reply-To: <-fks-fcgy-zpsE8qbIjkriUHsKFB6Hwn-JMX6yOrYYM=.e8e1a8b8-e8cd-4c40-99bf-3db375074de8@github.com> References: <-fks-fcgy-zpsE8qbIjkriUHsKFB6Hwn-JMX6yOrYYM=.e8e1a8b8-e8cd-4c40-99bf-3db375074de8@github.com> Message-ID: On Tue, 12 Aug 2025 10:51:06 GMT, Roman Marchenko wrote: > This change fixes the test artifact path on Alpine as `'[_*1000]'` is not recognized as a correct pattern, at least on Alpine 3.11. > > Without this fix, on Alpine the command `make test-prebuilt` generated paths like the following: > > Test report is stored in build/run-test-prebuilt/test-results/jtreg]test]hotspot]jtreg]tier1]common > > > Now it looks better: > > Test report is stored in build/run-test-prebuilt/test-results/jtreg_test_hotspot_jtreg_tier1_common > > All checks (tier1) are passed. @wkia Your change (at version 8569ea3c355a80b0b938cb53236178b7bb3a505a) is now ready to be sponsored by a Committer. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26742#issuecomment-3187857957 From duke at openjdk.org Thu Aug 14 11:25:00 2025 From: duke at openjdk.org (David Beaumont) Date: Thu, 14 Aug 2025 11:25:00 GMT Subject: RFR: 8365048: idea.sh script does not correctly detect/handle git worktrees Message-ID: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> Allows files or directories called .git to indicate likely use of Git for VCS in IntelliJ. Tested locally in a worktree and normal repository. It produces: in both cases, as expected. ------------- Commit messages: - Simple fix (just checking file) Changes: https://git.openjdk.org/jdk/pull/26777/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26777&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8365048 Stats: 2 lines in 1 file changed: 1 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26777.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26777/head:pull/26777 PR: https://git.openjdk.org/jdk/pull/26777 From vyazici at openjdk.org Thu Aug 14 12:03:12 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Thu, 14 Aug 2025 12:03:12 GMT Subject: RFR: 8365048: idea.sh script does not correctly detect/handle git worktrees In-Reply-To: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> References: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> Message-ID: On Thu, 14 Aug 2025 11:19:02 GMT, David Beaumont wrote: > Allows files or directories called .git to indicate likely use of Git for VCS in IntelliJ. > Tested locally in a worktree and normal repository. It produces: > > > > > > > in both cases, as expected. Marked as reviewed by vyazici (Committer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26777#pullrequestreview-3120319106 From magnus.ihse.bursie at oracle.com Thu Aug 14 12:22:17 2025 From: magnus.ihse.bursie at oracle.com (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 14:22:17 +0200 Subject: Fwd: DALEQ: An Open-Source Tool for Assessing Java Binary Equivalence In-Reply-To: References: Message-ID: While not directly applicable to the JDK, this is still interesting from a general reproducible build perspective. /Magnus -------- Forwarded Message -------- Subject: DALEQ: An Open-Source Tool for Assessing Java Binary Equivalence Date: Fri, 8 Aug 2025 03:42:47 +0000 From: Jens Dietrich via rb-general Reply-To: General discussions about reproducible builds To: rb-general at lists.reproducible-builds.org CC: Jens Dietrich Introducing DALEQ: An Open-Source Tool for Assessing Java Binary Equivalence We?re excited to announce the release of DALEQ ? a new open-source tool for analyzing and comparing Java binaries. DALEQ is designed to help developers, security researchers, and build engineers assess whether two .jar files built from the same source code are semantically equivalent, even when they?re not bitwise identical. This is particularly useful for comparing ?jars from Maven Central and jars produced via reproducible builds, or ?generated by services like Oracle?s build-from-source or Google?s Assured OSS. Although tools like diff or hash-based checks can detect binary differences, they don?t explain why binaries differ, or whether those differences matter. Bytecode-level differences can be caused by changes in compilers or build pipelines ? not necessarily by compromised builds. DALEQ helps distinguish harmless variation from meaningful divergence. How DALEQ Works DALEQ focuses on Java bytecode comparison, though it can also analyze resources and metadata in jars. At its core, DALEQ uses a datalog engine (Souffl?) ? the same kind of logic-based analysis engine used in systems like CodeQL ? to normalize and compare bytecode structures. Key features include: - Bytecode normalization to reduce irrelevant build differences - Semantic diffing that identifies and explains non-equivalent instructions - Provenance tracking: For equivalent files, DALEQ shows how equivalence was derived via datalog rules, for non-equivalent files, it provides bytecode-level diffs DALEQ also verifies whether the underlying source code inputs are the same (or at least equivalent, tolerating some variations in comments and formatting) and includes integrations with existing tools like the standard javap disassembler. It supports extensibility through a plugin system. Real-World Evaluation DALEQ builds on our earlier research into levels of binary equivalence. We evaluated the tool using real-world .jar files from Oracle and Google, both of whom independently rebuild Java packages from source. The results are encouraging: DALEQ was able to classify 85?90% of .class files that were not bitwise identical as still being semantically equivalent, with supporting provenance. Learn More You can try out DALEQ now on GitHub: https://github.com/binaryeq/daleq/ A detailed technical paper describing DALEQ and our evaluation: https://arxiv.org/abs/2508.01530 A technical paper describing the conceptual approach of levels of binary equivalence: https://arxiv.org/abs/2410.08427?(to be presented at ICSME?25 ) Jens Dietrich (Associate Professor at Victoria University of Wellington) Behnaz Hassanshahi (Principal Researcher and Tech Lead at Oracle, Oracle Labs Brisbane) * -------------- next part -------------- An HTML attachment was scrubbed... URL: From rmarchenko at openjdk.org Thu Aug 14 12:34:16 2025 From: rmarchenko at openjdk.org (Roman Marchenko) Date: Thu, 14 Aug 2025 12:34:16 GMT Subject: Integrated: 8365098: make/RunTests.gmk generates a wrong path to test artifacts on Alpine In-Reply-To: <-fks-fcgy-zpsE8qbIjkriUHsKFB6Hwn-JMX6yOrYYM=.e8e1a8b8-e8cd-4c40-99bf-3db375074de8@github.com> References: <-fks-fcgy-zpsE8qbIjkriUHsKFB6Hwn-JMX6yOrYYM=.e8e1a8b8-e8cd-4c40-99bf-3db375074de8@github.com> Message-ID: On Tue, 12 Aug 2025 10:51:06 GMT, Roman Marchenko wrote: > This change fixes the test artifact path on Alpine as `'[_*1000]'` is not recognized as a correct pattern, at least on Alpine 3.11. > > Without this fix, on Alpine the command `make test-prebuilt` generated paths like the following: > > Test report is stored in build/run-test-prebuilt/test-results/jtreg]test]hotspot]jtreg]tier1]common > > > Now it looks better: > > Test report is stored in build/run-test-prebuilt/test-results/jtreg_test_hotspot_jtreg_tier1_common > > All checks (tier1) are passed. This pull request has now been integrated. Changeset: 41520998 Author: Roman Marchenko Committer: Magnus Ihse Bursie URL: https://git.openjdk.org/jdk/commit/41520998aa8808452ee384b213b2a77c7bad668d Stats: 3 lines in 1 file changed: 0 ins; 0 del; 3 mod 8365098: make/RunTests.gmk generates a wrong path to test artifacts on Alpine Reviewed-by: erikj, ihse ------------- PR: https://git.openjdk.org/jdk/pull/26742 From erikj at openjdk.org Thu Aug 14 12:57:12 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Thu, 14 Aug 2025 12:57:12 GMT Subject: RFR: 8365048: idea.sh script does not correctly detect/handle git worktrees In-Reply-To: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> References: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> Message-ID: On Thu, 14 Aug 2025 11:19:02 GMT, David Beaumont wrote: > Allows files or directories called .git to indicate likely use of Git for VCS in IntelliJ. > Tested locally in a worktree and normal repository. It produces: > > > > > > > in both cases, as expected. Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26777#pullrequestreview-3120484397 From kbarrett at openjdk.org Thu Aug 14 13:34:11 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 14 Aug 2025 13:34:11 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 09:55:20 GMT, Magnus Ihse Bursie wrote: > According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. > > I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. > > I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. make/hotspot/lib/CompileGtest.gmk line 112: > 110: DISABLED_WARNINGS_clang_test_g1ServiceThread.cpp := delete-abstract-non-virtual-dtor, \ > 111: DISABLED_WARNINGS_clang_test_logDecorations.cpp := missing-field-initializers, \ > 112: DISABLED_WARNINGS_microsoft := $(DISABLED_WARNINGS_microsoft) 4530, \ How widespread are these warnings? I expect such a warning from jfr/test_networkUtilization.cpp, but not anywhere else. Could the disable of this warning be narrowed accordingly? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26721#discussion_r2276648787 From stuefe at openjdk.org Thu Aug 14 14:09:15 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Thu, 14 Aug 2025 14:09:15 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 09:55:20 GMT, Magnus Ihse Bursie wrote: > According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. > > I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. > > I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. googletest uses C++ exceptions: thomas at starfish:/shared/projects/openjdk/gtest/googletest-1.14.0$ ack 'throw [a-zA-Z]' | wc -l 68 And for C++ exception support we need `/EHsc`, `/EHs` or `/EHa`: https://learn.microsoft.com/en-us/cpp/build/reference/eh-exception-handling-model?view=msvc-170 Standard C++ exception handling Full compiler support for the Standard C++ exception handling model that safely unwinds stack objects requires /EHsc (recommended), /EHs, or /EHa. So I don't think we should remove this compiler option. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3188586481 From mcimadamore at openjdk.org Thu Aug 14 14:09:15 2025 From: mcimadamore at openjdk.org (Maurizio Cimadamore) Date: Thu, 14 Aug 2025 14:09:15 GMT Subject: RFR: 8365048: idea.sh script does not correctly detect/handle git worktrees In-Reply-To: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> References: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> Message-ID: On Thu, 14 Aug 2025 11:19:02 GMT, David Beaumont wrote: > Allows files or directories called .git to indicate likely use of Git for VCS in IntelliJ. > Tested locally in a worktree and normal repository. It produces: > > > > > > > in both cases, as expected. Marked as reviewed by mcimadamore (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26777#pullrequestreview-3120743925 From jwaters at openjdk.org Thu Aug 14 14:47:11 2025 From: jwaters at openjdk.org (Julian Waters) Date: Thu, 14 Aug 2025 14:47:11 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: <6Y4P7EnP6dYOFK5VWdBLqmxTdFbL9kyOzAKX1f-okGc=.2bc15246-fd69-403a-98fe-92bb71d1c2f8@github.com> On Mon, 11 Aug 2025 09:55:20 GMT, Magnus Ihse Bursie wrote: > According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. > > I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. > > I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. I did take a brief look at the other Pull Request, but I still don't really understand this fully. Doesn't the gtest framework itself use C++ exceptions (As Thomas mentioned)? After all, this is likely why -fno-exceptions is not used with gcc and clang when compiling gtest. It would be a bit odd if exceptions were disabled for only Windows (More accurately VC) and not any other platform. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3188719550 From jwaters at openjdk.org Thu Aug 14 14:53:13 2025 From: jwaters at openjdk.org (Julian Waters) Date: Thu, 14 Aug 2025 14:53:13 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: <13UxlfWCmQ_-nlvGNZu5CdHy9KdnSkOK74OosLCuWDs=.281f68cb-9d07-436b-b472-1831ee917699@github.com> On Mon, 11 Aug 2025 09:55:20 GMT, Magnus Ihse Bursie wrote: > According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. > > I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. > > I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. make/hotspot/lib/CompileGtest.gmk line 65: > 63: unused-result zero-as-null-pointer-constant, \ > 64: DISABLED_WARNINGS_clang := format-nonliteral undef unused-result, \ > 65: DISABLED_WARNINGS_microsoft := 4530, \ I don't think this is a good idea. This doesn't fully force disable exceptions like -fno-exceptions does with gcc and clang, it can result in unexpected behaviour that causes hard to track bugs that will be difficult to solve if someone who isn't familiar with HotSpot rules introduces exceptions in gtest code (And perhaps in other cases even when exceptions aren't used too). ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26721#discussion_r2276856013 From ihse at openjdk.org Thu Aug 14 14:53:12 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 14:53:12 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 09:55:20 GMT, Magnus Ihse Bursie wrote: > According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. > > I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. > > I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. So we should not remove exceptions for libgtest. But for the special version of libjvm it still seem to make sense, right? Even if gtest uses exceptions internally in the framework, we should not compile our code differently. Or am I missing something? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3188743250 From shade at openjdk.org Thu Aug 14 14:57:14 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 14 Aug 2025 14:57:14 GMT Subject: RFR: 8365048: idea.sh script does not correctly detect/handle git worktrees In-Reply-To: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> References: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> Message-ID: On Thu, 14 Aug 2025 11:19:02 GMT, David Beaumont wrote: > Allows files or directories called .git to indicate likely use of Git for VCS in IntelliJ. > Tested locally in a worktree and normal repository. It produces: > > > > > > > in both cases, as expected. bin/idea.sh line 128: > 126: fi > 127: > 128: # Git workstrees use a '.git' file rather than directory, so test both. Suggestion: # Git worktrees use a '.git' file rather than directory, so test both. Right? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26777#discussion_r2276874741 From ihse at openjdk.org Thu Aug 14 15:10:14 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 15:10:14 GMT Subject: RFR: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension [v2] In-Reply-To: <_HedHy5F966CKB-J_xRbvt_gLfCk9BIlNvk5H5WpwHc=.2b9e787f-64be-4cb5-9ce4-5c6907ac4b28@github.com> References: <_HedHy5F966CKB-J_xRbvt_gLfCk9BIlNvk5H5WpwHc=.2b9e787f-64be-4cb5-9ce4-5c6907ac4b28@github.com> Message-ID: On Wed, 13 Aug 2025 14:23:37 GMT, Manuel H?ssig wrote: >> This PR adds a basic configuration for the [Oracle Java VSCode extension](https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java) to the `vscode-project-*` targets. > > Manuel H?ssig has updated the pull request incrementally with one additional commit since the last revision: > > Prevent organizing imports It's hard to say exactly if these changes are what is needed, but they look sane, and if you have verified that it works then I'm okay with it. Thanks for improving the IDE support! ------------- Marked as reviewed by ihse (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26759#pullrequestreview-3120966144 From ihse at openjdk.org Thu Aug 14 15:15:15 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 15:15:15 GMT Subject: RFR: 8365048: idea.sh script does not correctly detect/handle git worktrees In-Reply-To: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> References: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> Message-ID: On Thu, 14 Aug 2025 11:19:02 GMT, David Beaumont wrote: > Allows files or directories called .git to indicate likely use of Git for VCS in IntelliJ. > Tested locally in a worktree and normal repository. It produces: > > > > > > > in both cases, as expected. LGTM, if you fix the typo in the comment. ------------- Marked as reviewed by ihse (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26777#pullrequestreview-3120977831 From duke at openjdk.org Thu Aug 14 15:15:17 2025 From: duke at openjdk.org (David Beaumont) Date: Thu, 14 Aug 2025 15:15:17 GMT Subject: RFR: 8365048: idea.sh script does not correctly detect/handle git worktrees In-Reply-To: References: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> Message-ID: On Thu, 14 Aug 2025 14:54:43 GMT, Aleksey Shipilev wrote: >> Allows files or directories called .git to indicate likely use of Git for VCS in IntelliJ. >> Tested locally in a worktree and normal repository. It produces: >> >> >> >> >> >> >> in both cases, as expected. > > bin/idea.sh line 128: > >> 126: fi >> 127: >> 128: # Git workstrees use a '.git' file rather than directory, so test both. > > Suggestion: > > # Git worktrees use a '.git' file rather than directory, so test both. > > > Right? *doh* - thanks ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26777#discussion_r2276919398 From duke at openjdk.org Thu Aug 14 15:21:29 2025 From: duke at openjdk.org (David Beaumont) Date: Thu, 14 Aug 2025 15:21:29 GMT Subject: RFR: 8365048: idea.sh script does not correctly detect/handle git worktrees [v2] In-Reply-To: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> References: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> Message-ID: > Allows files or directories called .git to indicate likely use of Git for VCS in IntelliJ. > Tested locally in a worktree and normal repository. It produces: > > > > > > > in both cases, as expected. David Beaumont has updated the pull request incrementally with one additional commit since the last revision: Fix typo ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26777/files - new: https://git.openjdk.org/jdk/pull/26777/files/582a0143..307574fa Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26777&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26777&range=00-01 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26777.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26777/head:pull/26777 PR: https://git.openjdk.org/jdk/pull/26777 From jlahoda at openjdk.org Thu Aug 14 15:29:10 2025 From: jlahoda at openjdk.org (Jan Lahoda) Date: Thu, 14 Aug 2025 15:29:10 GMT Subject: RFR: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension In-Reply-To: References: <99y0kw0loER23cXnLl2k88BEVY7XorBViF6SGADgNRY=.09ee46af-2a6b-4c95-8d26-f76117bb1f7f@github.com> Message-ID: On Wed, 13 Aug 2025 14:24:28 GMT, Manuel H?ssig wrote: > > I would suggest to drop: `"jdk.advanced.disable.nbjavac": true,` > > Can you elaborate on the surprising results? When developing the JDK we will most probably use features not supported by the `nbjavac`. In general, it can be anything. From relatively minor problems like not working code completion in some corner case, to a complete failure of the Java editor features. When nbjavac is disabled, the javac in the JDK on which the extension runs needs to be "close enough" to the version of javac on which nbjavac is based (I believe it is currently ~JDK 24). And depending on the differences between the version against which the extension is built and the real javac in JDK, the there may be unobservable, minor or major negative effects. If the runtime JDK is too old, there's a warning. But if it is newer, then it is expected the user knows what they are doing. And I am not sure if everyone using this task will know how to interpret potential failures, given they didn't knowingly select the option. (It is true that JDK 24 and JDK 25 seem to be close enough, so that there are no major effects, and maybe not even minor effects. That may or may not be the case with any upcoming JDK 26 version.) ------------- PR Comment: https://git.openjdk.org/jdk/pull/26759#issuecomment-3188868986 From shade at openjdk.org Thu Aug 14 15:45:14 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Thu, 14 Aug 2025 15:45:14 GMT Subject: RFR: 8365048: idea.sh script does not correctly detect/handle git worktrees [v2] In-Reply-To: References: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> Message-ID: On Thu, 14 Aug 2025 15:21:29 GMT, David Beaumont wrote: >> Allows files or directories called .git to indicate likely use of Git for VCS in IntelliJ. >> Tested locally in a worktree and normal repository. It produces: >> >> >> >> >> >> >> in both cases, as expected. > > David Beaumont has updated the pull request incrementally with one additional commit since the last revision: > > Fix typo Marked as reviewed by shade (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26777#pullrequestreview-3121091987 From duke at openjdk.org Thu Aug 14 16:56:19 2025 From: duke at openjdk.org (duke) Date: Thu, 14 Aug 2025 16:56:19 GMT Subject: RFR: 8365048: idea.sh script does not correctly detect/handle git worktrees [v2] In-Reply-To: References: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> Message-ID: On Thu, 14 Aug 2025 15:21:29 GMT, David Beaumont wrote: >> Allows files or directories called .git to indicate likely use of Git for VCS in IntelliJ. >> Tested locally in a worktree and normal repository. It produces: >> >> >> >> >> >> >> in both cases, as expected. > > David Beaumont has updated the pull request incrementally with one additional commit since the last revision: > > Fix typo @david-beaumont Your change (at version 307574fa815477b3efe05c231956f516b80d53b9) is now ready to be sponsored by a Committer. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26777#issuecomment-3189176682 From duke at openjdk.org Thu Aug 14 17:05:19 2025 From: duke at openjdk.org (David Beaumont) Date: Thu, 14 Aug 2025 17:05:19 GMT Subject: Integrated: 8365048: idea.sh script does not correctly detect/handle git worktrees In-Reply-To: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> References: <0uUPK262bGaFrjW9a9R8J2pA_3kGi4pA7Nnn9FLFZ8Y=.aa46d4a5-11dd-4322-a1fa-483413e95e83@github.com> Message-ID: On Thu, 14 Aug 2025 11:19:02 GMT, David Beaumont wrote: > Allows files or directories called .git to indicate likely use of Git for VCS in IntelliJ. > Tested locally in a worktree and normal repository. It produces: > > > > > > > in both cases, as expected. This pull request has now been integrated. Changeset: ba231052 Author: David Beaumont Committer: Aleksey Shipilev URL: https://git.openjdk.org/jdk/commit/ba231052319676ece5105253b58efa4e906feab4 Stats: 2 lines in 1 file changed: 1 ins; 0 del; 1 mod 8365048: idea.sh script does not correctly detect/handle git worktrees Reviewed-by: shade, vyazici, erikj, mcimadamore, ihse ------------- PR: https://git.openjdk.org/jdk/pull/26777 From lmesnik at openjdk.org Thu Aug 14 17:57:47 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Thu, 14 Aug 2025 17:57:47 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v4] In-Reply-To: References: Message-ID: > The fix added JVMTI stress testing mode. > > This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. > > I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. > > The agent has 2 modes now: > - regular that is compatible with most of tests including other jvmti, jdi and jdb tests > - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests > > The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. > Note, that flagless tests are excluded automatically and not executed in this mode. Leonid Mesnik has updated the pull request incrementally with three additional commits since the last revision: - removed space - removed wrong commit. - renamed functions, removed incorrect comments ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26360/files - new: https://git.openjdk.org/jdk/pull/26360/files/49c2a67d..360db5d9 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=02-03 Stats: 11 lines in 1 file changed: 0 ins; 3 del; 8 mod Patch: https://git.openjdk.org/jdk/pull/26360.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26360/head:pull/26360 PR: https://git.openjdk.org/jdk/pull/26360 From kbarrett at openjdk.org Thu Aug 14 19:03:10 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 14 Aug 2025 19:03:10 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: On Thu, 14 Aug 2025 14:06:07 GMT, Thomas Stuefe wrote: > googletest uses C++ exceptions: > > ``` > thomas at starfish:/shared/projects/openjdk/gtest/googletest-1.14.0$ ack 'throw [a-zA-Z]' | wc -l > 68 That just says there is source code that could potentially use exceptions, depending on configuration. It doesn't mean they are used if configured to be disabled. After all, there's `GTEST_HAS_EXCEPTIONS`. And spot-checking some of the uses of `throw`, they are appropriately protected by that macro. So as long as the macro is set properly... If not explicitly set, it gets auto-set to 1 for `defined(_MSC_VER) && defined(_CPPUNWIND)` with a comment saying the latter is set iff exceptions are enabled. And that seems true according to https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=msvc-170 "_CPPUNWIND Defined as 1 if one or more of the [/GX (Enable Exception Handling)](https://learn.microsoft.com/en-us/cpp/build/reference/gx-enable-exception-handling?view=msvc-170), [/clr (Common Language Runtime Compilation)](https://learn.microsoft.com/en-us/cpp/build/reference/clr-common-language-runtime-compilation?view=msvc-170), or [/EH (Exception Handling Model)](https://learn.microsoft.com/en-us/cpp/build/reference/eh-exception-handling-model?view=msvc-170) compiler options are set. Otherwise, undefined." ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3189559033 From kbarrett at openjdk.org Thu Aug 14 19:16:11 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 14 Aug 2025 19:16:11 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: <6Y4P7EnP6dYOFK5VWdBLqmxTdFbL9kyOzAKX1f-okGc=.2bc15246-fd69-403a-98fe-92bb71d1c2f8@github.com> References: <6Y4P7EnP6dYOFK5VWdBLqmxTdFbL9kyOzAKX1f-okGc=.2bc15246-fd69-403a-98fe-92bb71d1c2f8@github.com> Message-ID: On Thu, 14 Aug 2025 14:44:21 GMT, Julian Waters wrote: > I did take a brief look at the other Pull Request, but I still don't really understand this fully. Doesn't the gtest framework itself use C++ exceptions (As Thomas mentioned)? After all, this is likely why -fno-exceptions is not used with gcc and clang when compiling gtest. It would be a bit odd if exceptions were disabled for only Windows (More accurately VC) and not any other platform. But `-fno-exceptions` *is* used for gcc (and probably for clang, though I've not checked). Verified by examination of ".o.cmdline" files for both libgtest and the HotSpot gtests. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3189591625 From kbarrett at openjdk.org Thu Aug 14 19:16:12 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 14 Aug 2025 19:16:12 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: <0ZkEvZU21ZoNvU4yLgG-__yzcQu9kvlHmKBWWAczTKs=.f439c395-de47-423b-af9d-0f999e7d7825@github.com> On Mon, 11 Aug 2025 09:55:20 GMT, Magnus Ihse Bursie wrote: > According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. > > I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. > > I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. > But `-fno-exceptions` _is_ used for gcc (and probably for clang, though I've not checked). Verified by examination of ".o.cmdline" files for both libgtest and the HotSpot gtests. Oh, and once again, thank you thank you thank you for the ".o.cmdline" files! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3189596413 From kbarrett at openjdk.org Thu Aug 14 19:27:11 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 14 Aug 2025 19:27:11 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 09:55:20 GMT, Magnus Ihse Bursie wrote: > According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. > > I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. > > I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. My guess is that MSVC C4530 needs to be disabled when building libgtest even when we're not enabling exceptions for the same reason that I expected that warning from our jfr/test_networkUtilization.cpp. That jfr test includes ``, and vector::at throws, and that apparently isn't protected by anything that knows about exceptions being disabled. (At least, that's the problem I ran into a while ago.) So even if it's never called, it still triggers the warning. googletest also includes `` in a bunch of places, so I'd expect the same issue there. Again, warnings even though that code is never called. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3189625063 From vyazici at openjdk.org Thu Aug 14 19:32:29 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Thu, 14 Aug 2025 19:32:29 GMT Subject: RFR: 8365244: Some test control variables are undocumented in doc/testing.md Message-ID: <-jmAeutoR_uvUA8g482hM530yYF_hYjHuWqhSj__h0M=.59205b71-dba1-46ca-be79-eb7bfcf043a3@github.com> Synchronize `make/RunTests.gmk` keyword variables with `doc/testing.{md,html}`. ------------- Commit messages: - Synchronize `make/RunTests.gmk` keyword variables with `doc/testing.{md,html}` Changes: https://git.openjdk.org/jdk/pull/26789/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26789&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8365244 Stats: 32 lines in 2 files changed: 25 ins; 2 del; 5 mod Patch: https://git.openjdk.org/jdk/pull/26789.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26789/head:pull/26789 PR: https://git.openjdk.org/jdk/pull/26789 From dnsimon at openjdk.org Thu Aug 14 19:33:15 2025 From: dnsimon at openjdk.org (Doug Simon) Date: Thu, 14 Aug 2025 19:33:15 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v2] In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 14:22:08 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > After suggestions from Erik and Andrey > I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. Would you mind also running tier9 to avoid surprises there. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3189640422 From erikj at openjdk.org Thu Aug 14 19:41:11 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Thu, 14 Aug 2025 19:41:11 GMT Subject: RFR: 8365244: Some test control variables are undocumented in doc/testing.md In-Reply-To: <-jmAeutoR_uvUA8g482hM530yYF_hYjHuWqhSj__h0M=.59205b71-dba1-46ca-be79-eb7bfcf043a3@github.com> References: <-jmAeutoR_uvUA8g482hM530yYF_hYjHuWqhSj__h0M=.59205b71-dba1-46ca-be79-eb7bfcf043a3@github.com> Message-ID: <5uNZtKOqPnenKtj5rY5JdCmHdBMQ--gEFXf4sSVK8Zc=.3fa312cb-c8f2-42c2-b08b-d0916c0dafa3@github.com> On Thu, 14 Aug 2025 19:26:29 GMT, Volkan Yazici wrote: > Synchronize `make/RunTests.gmk` keyword variables with `doc/testing.{md,html}`. Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26789#pullrequestreview-3121900093 From lmesnik at openjdk.org Thu Aug 14 19:44:59 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Thu, 14 Aug 2025 19:44:59 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v5] In-Reply-To: References: Message-ID: > The fix added JVMTI stress testing mode. > > This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. > > I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. > > The agent has 2 modes now: > - regular that is compatible with most of tests including other jvmti, jdi and jdb tests > - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests > > The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. > Note, that flagless tests are excluded automatically and not executed in this mode. Leonid Mesnik has updated the pull request incrementally with three additional commits since the last revision: - Apply suggestions from code review Co-authored-by: Magnus Ihse Bursie - Update test/lib/jdk/test/lib/jvmti/libJvmtiStressAgent.cpp Co-authored-by: Magnus Ihse Bursie - Update test/lib/jdk/test/lib/jvmti/libJvmtiStressAgent.cpp Co-authored-by: Magnus Ihse Bursie ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26360/files - new: https://git.openjdk.org/jdk/pull/26360/files/360db5d9..d45c0701 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=03-04 Stats: 5 lines in 2 files changed: 0 ins; 0 del; 5 mod Patch: https://git.openjdk.org/jdk/pull/26360.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26360/head:pull/26360 PR: https://git.openjdk.org/jdk/pull/26360 From lmesnik at openjdk.org Thu Aug 14 19:44:59 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Thu, 14 Aug 2025 19:44:59 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v4] In-Reply-To: References: Message-ID: On Thu, 14 Aug 2025 17:57:47 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with three additional commits since the last revision: > > - removed space > - removed wrong commit. > - renamed functions, removed incorrect comments Sorry, I just forgot to "apply" your comments, thanks for reminding! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26360#issuecomment-3189671622 From erikj at openjdk.org Thu Aug 14 19:52:12 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Thu, 14 Aug 2025 19:52:12 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v5] In-Reply-To: References: Message-ID: On Thu, 14 Aug 2025 19:44:59 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with three additional commits since the last revision: > > - Apply suggestions from code review > > Co-authored-by: Magnus Ihse Bursie > - Update test/lib/jdk/test/lib/jvmti/libJvmtiStressAgent.cpp > > Co-authored-by: Magnus Ihse Bursie > - Update test/lib/jdk/test/lib/jvmti/libJvmtiStressAgent.cpp > > Co-authored-by: Magnus Ihse Bursie Makefile changes look good now. I think this new option should be documented in testing.md/html. ------------- PR Review: https://git.openjdk.org/jdk/pull/26360#pullrequestreview-3121925674 From ihse at openjdk.org Thu Aug 14 21:18:13 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 14 Aug 2025 21:18:13 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v5] In-Reply-To: References: Message-ID: On Thu, 14 Aug 2025 19:49:24 GMT, Erik Joelsson wrote: > I think this new option should be documented in testing.md/html. Yes, I agree. I tried to ask for this above. @lmesnik When you have updated the markdown file, run `make update-build-docs` to generate the html version. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26360#issuecomment-3189894607 From kbarrett at openjdk.org Thu Aug 14 22:23:10 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 14 Aug 2025 22:23:10 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: On Thu, 14 Aug 2025 19:24:21 GMT, Kim Barrett wrote: > My guess is that MSVC C4530 needs to be disabled when building libgtest even when we're not enabling exceptions for the same reason that I expected that warning from our jfr/test_networkUtilization.cpp. > > That jfr test includes ``, and vector::at throws, and that apparently isn't protected by anything that knows about exceptions being disabled. (At least, that's the problem I ran into a while ago.) So even if it's never called, it still triggers the warning. > > googletest also includes `` in a bunch of places, so I'd expect the same issue there. Again, warnings even though that code is never called. Not ``, it's `` or one of those: `basic_ostream<...>::operator<<(double)` may throw. Didn't see any warnings from `` so that one may have been fixed, but still, it looks like the MS stdlib triggers warnings when building with exceptions disabled. So assuming it passes testing, this change seems fine to me. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3190020874 From kbarrett at openjdk.org Thu Aug 14 22:23:10 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 14 Aug 2025 22:23:10 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 09:55:20 GMT, Magnus Ihse Bursie wrote: > According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. > > I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. > > I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. Assuming no testing issues are encountered, this looks good to me. ------------- Marked as reviewed by kbarrett (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26721#pullrequestreview-3122256650 From duke at openjdk.org Fri Aug 15 00:06:28 2025 From: duke at openjdk.org (Saint Wesonga) Date: Fri, 15 Aug 2025 00:06:28 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 Message-ID: [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64. The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it). ------------- Commit messages: - Remove -Ta flag - Use armasm64.exe as the assembler for Windows aarch64 Changes: https://git.openjdk.org/jdk/pull/26791/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26791&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8365579 Stats: 16 lines in 3 files changed: 9 ins; 0 del; 7 mod Patch: https://git.openjdk.org/jdk/pull/26791.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26791/head:pull/26791 PR: https://git.openjdk.org/jdk/pull/26791 From lmesnik at openjdk.org Fri Aug 15 04:33:59 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Fri, 15 Aug 2025 04:33:59 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v6] In-Reply-To: References: Message-ID: > The fix added JVMTI stress testing mode. > > This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. > > I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. > > The agent has 2 modes now: > - regular that is compatible with most of tests including other jvmti, jdi and jdb tests > - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests > > The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. > Note, that flagless tests are excluded automatically and not executed in this mode. Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: add documentation ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26360/files - new: https://git.openjdk.org/jdk/pull/26360/files/d45c0701..514ed252 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=05 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=04-05 Stats: 17 lines in 3 files changed: 13 ins; 3 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26360.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26360/head:pull/26360 PR: https://git.openjdk.org/jdk/pull/26360 From lmesnik at openjdk.org Fri Aug 15 04:37:12 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Fri, 15 Aug 2025 04:37:12 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v6] In-Reply-To: References: Message-ID: <3Wv7WQnb0uRdX37iZ3RDXljs6cncyI8b6mTujVfp0A4=.5859b0a5-0dac-4eaa-831e-89c420393153@github.com> On Fri, 15 Aug 2025 04:33:59 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: > > add documentation Sorry, I just didn't have time today. I updated .md and regenerated .html using `make update-build-docs` command. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26360#issuecomment-3190585133 From stuefe at openjdk.org Fri Aug 15 05:40:10 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Fri, 15 Aug 2025 05:40:10 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: <6Y4P7EnP6dYOFK5VWdBLqmxTdFbL9kyOzAKX1f-okGc=.2bc15246-fd69-403a-98fe-92bb71d1c2f8@github.com> References: <6Y4P7EnP6dYOFK5VWdBLqmxTdFbL9kyOzAKX1f-okGc=.2bc15246-fd69-403a-98fe-92bb71d1c2f8@github.com> Message-ID: <6ohN4d_NgrNsfHXC4IcnfzBIcq1NFf0maLzNFgQaXcI=.b7b5337b-4371-4f98-9a37-bd8e1156b6bf@github.com> On Thu, 14 Aug 2025 14:44:21 GMT, Julian Waters wrote: >> According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. >> >> I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. >> >> I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. > > I did take a brief look at the other Pull Request, but I still don't really understand this fully. Doesn't the gtest framework itself use C++ exceptions (As Thomas mentioned)? After all, this is likely why -fno-exceptions is not used with gcc and clang when compiling gtest. It would be a bit odd if exceptions were disabled for only Windows (More accurately VC) and not any other platform. I feel uncomfortable about switching off this warning. I agree with @TheShermanTanker there. Seems to me that if the compiler warns me that I should enable exceptions, I should do that instead of disabling the warning? What is the motivation for this change? What do we gain by switching the feature off? This switch only applies to the gtest compilation units, right, not to the libjvm? Don't we link googletest and libjvm statically? Are exceptions thrown from header files that are compiled as part of the gtest libjvm? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3190668595 From mhaessig at openjdk.org Fri Aug 15 06:36:46 2025 From: mhaessig at openjdk.org (Manuel =?UTF-8?B?SMOkc3NpZw==?=) Date: Fri, 15 Aug 2025 06:36:46 GMT Subject: RFR: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension [v3] In-Reply-To: References: Message-ID: > This PR adds a basic configuration for the [Oracle Java VSCode extension](https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java) to the `vscode-project-*` targets. Manuel H?ssig has updated the pull request incrementally with one additional commit since the last revision: Enable nbjavac ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26759/files - new: https://git.openjdk.org/jdk/pull/26759/files/277a590d..bfa9d40c Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26759&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26759&range=01-02 Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/26759.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26759/head:pull/26759 PR: https://git.openjdk.org/jdk/pull/26759 From mhaessig at openjdk.org Fri Aug 15 06:36:47 2025 From: mhaessig at openjdk.org (Manuel =?UTF-8?B?SMOkc3NpZw==?=) Date: Fri, 15 Aug 2025 06:36:47 GMT Subject: RFR: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension [v2] In-Reply-To: <_HedHy5F966CKB-J_xRbvt_gLfCk9BIlNvk5H5WpwHc=.2b9e787f-64be-4cb5-9ce4-5c6907ac4b28@github.com> References: <_HedHy5F966CKB-J_xRbvt_gLfCk9BIlNvk5H5WpwHc=.2b9e787f-64be-4cb5-9ce4-5c6907ac4b28@github.com> Message-ID: On Wed, 13 Aug 2025 14:23:37 GMT, Manuel H?ssig wrote: >> This PR adds a basic configuration for the [Oracle Java VSCode extension](https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java) to the `vscode-project-*` targets. > > Manuel H?ssig has updated the pull request incrementally with one additional commit since the last revision: > > Prevent organizing imports I was not aware that it had to be "close" to nbjavac. Then enabling nbjavac makes much more sense. Thank you for explaining this. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26759#issuecomment-3190762251 From jwaters at openjdk.org Fri Aug 15 06:48:10 2025 From: jwaters at openjdk.org (Julian Waters) Date: Fri, 15 Aug 2025 06:48:10 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: <0ZkEvZU21ZoNvU4yLgG-__yzcQu9kvlHmKBWWAczTKs=.f439c395-de47-423b-af9d-0f999e7d7825@github.com> References: <0ZkEvZU21ZoNvU4yLgG-__yzcQu9kvlHmKBWWAczTKs=.f439c395-de47-423b-af9d-0f999e7d7825@github.com> Message-ID: <7oSTN3OqyJEONNvAXOfbMmtW_yNV5YjZzTnAnMrn468=.d4f4ec82-de95-43f2-82b1-389356f6e5e0@github.com> On Thu, 14 Aug 2025 19:13:18 GMT, Kim Barrett wrote: > But `-fno-exceptions` _is_ used for gcc -fno-exceptions to my knowledge is only set in TOOLCHAIN_CFLAGS_JVM and for adlc compiled for Linux. That must mean gtest uses the same flags that the regular JVM does. I was not aware of that, so that would make my previous statement incorrect. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3190779189 From jwaters at openjdk.org Fri Aug 15 06:55:10 2025 From: jwaters at openjdk.org (Julian Waters) Date: Fri, 15 Aug 2025 06:55:10 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 In-Reply-To: References: Message-ID: <4oh3OERh33-hz6XeVuQBkiLmm_EQxll27TceRh3Ml3s=.e4829e72-ad0b-4726-ba3e-30d7b1f4a53b@github.com> On Thu, 14 Aug 2025 23:59:23 GMT, Saint Wesonga wrote: > [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64. > > The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it). I'd prefer if -Ta could be kept somehow but there doesn't seem to be a clean way to do that, so this gets a +1 from me anyway ------------- Marked as reviewed by jwaters (Committer). PR Review: https://git.openjdk.org/jdk/pull/26791#pullrequestreview-3123104105 From sspitsyn at openjdk.org Fri Aug 15 07:03:15 2025 From: sspitsyn at openjdk.org (Serguei Spitsyn) Date: Fri, 15 Aug 2025 07:03:15 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v6] In-Reply-To: References: Message-ID: <4l03LqVrTEjF0hwX9gcoaopc4ADypXFmUCNYFht2Fp8=.3d2946a8-02e6-40fb-b434-59c394cc187f@github.com> On Fri, 15 Aug 2025 04:33:59 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: > > add documentation Thank you for the updates in the stress agent `.cpp` file! This looks okay to me modulo potential doc update. ------------- Marked as reviewed by sspitsyn (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26360#pullrequestreview-3123114291 From ihse at openjdk.org Fri Aug 15 08:41:16 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Fri, 15 Aug 2025 08:41:16 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v6] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 04:33:59 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: > > add documentation LGTM now. Thanks! ------------- Marked as reviewed by ihse (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26360#pullrequestreview-3123261422 From ihse at openjdk.org Fri Aug 15 08:43:12 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Fri, 15 Aug 2025 08:43:12 GMT Subject: RFR: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension [v3] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 06:36:46 GMT, Manuel H?ssig wrote: >> This PR adds a basic configuration for the [Oracle Java VSCode extension](https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java) to the `vscode-project-*` targets. > > Manuel H?ssig has updated the pull request incrementally with one additional commit since the last revision: > > Enable nbjavac Marked as reviewed by ihse (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26759#pullrequestreview-3123262333 From jlahoda at openjdk.org Fri Aug 15 08:43:12 2025 From: jlahoda at openjdk.org (Jan Lahoda) Date: Fri, 15 Aug 2025 08:43:12 GMT Subject: RFR: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension [v3] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 06:36:46 GMT, Manuel H?ssig wrote: >> This PR adds a basic configuration for the [Oracle Java VSCode extension](https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java) to the `vscode-project-*` targets. > > Manuel H?ssig has updated the pull request incrementally with one additional commit since the last revision: > > Enable nbjavac Thanks, @mhaessig! ------------- Marked as reviewed by jlahoda (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26759#pullrequestreview-3123264543 From ihse at openjdk.org Fri Aug 15 08:46:21 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Fri, 15 Aug 2025 08:46:21 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: <7oSTN3OqyJEONNvAXOfbMmtW_yNV5YjZzTnAnMrn468=.d4f4ec82-de95-43f2-82b1-389356f6e5e0@github.com> References: <0ZkEvZU21ZoNvU4yLgG-__yzcQu9kvlHmKBWWAczTKs=.f439c395-de47-423b-af9d-0f999e7d7825@github.com> <7oSTN3OqyJEONNvAXOfbMmtW_yNV5YjZzTnAnMrn468=.d4f4ec82-de95-43f2-82b1-389356f6e5e0@github.com> Message-ID: <4vaqDlEWvl2uy5B-SzmofdUn6ggAODgRjw_nGwp-XDI=.9241ee6d-180f-478f-a1a5-ac4ead6baae6@github.com> On Fri, 15 Aug 2025 06:45:35 GMT, Julian Waters wrote: >>> But `-fno-exceptions` _is_ used for gcc (and probably for clang, though I've not checked). Verified by examination of ".o.cmdline" files for both libgtest and the HotSpot gtests. >> >> Oh, and once again, thank you thank you thank you for the ".o.cmdline" files! > >> But `-fno-exceptions` _is_ used for gcc > > -fno-exceptions to my knowledge is only set in TOOLCHAIN_CFLAGS_JVM and for adlc compiled for Linux. That must mean gtest uses the same flags that the regular JVM does. I was not aware of that, so that would make my previous statement incorrect. > I feel uncomfortable about switching off this warning. I agree with @TheShermanTanker there. Seems to me that if the compiler warns me that I should enable exceptions, I should do that instead of disabling the warning? As Kim wrote, this seems to be about a bug in the compiler. If you include certain standard headers (``), the compiler will give this warning, regardless if you use any functions from the header or not, if you compile with exceptions disabled. Our normal libjvm is compiled with exceptions disabled. It makes sense to run tests on a build that is as close as possible to the real thing, so we should compile libjvm for gtest with exceptions disabled, too. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3190969501 From ihse at openjdk.org Fri Aug 15 08:48:14 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Fri, 15 Aug 2025 08:48:14 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v6] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 04:33:59 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: > > add documentation Actually, GHA testing fails with an error in libJvmtiStressAgent.cpp. Please investigate. ------------- Changes requested by ihse (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26360#pullrequestreview-3123276665 From mhaessig at openjdk.org Fri Aug 15 08:58:17 2025 From: mhaessig at openjdk.org (Manuel =?UTF-8?B?SMOkc3NpZw==?=) Date: Fri, 15 Aug 2025 08:58:17 GMT Subject: Integrated: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 13:22:21 GMT, Manuel H?ssig wrote: > This PR adds a basic configuration for the [Oracle Java VSCode extension](https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java) to the `vscode-project-*` targets. This pull request has now been integrated. Changeset: fa2eb616 Author: Manuel H?ssig URL: https://git.openjdk.org/jdk/commit/fa2eb616482250dff6a3b667798aec37114005a9 Stats: 5 lines in 1 file changed: 5 ins; 0 del; 0 mod 8365491: VSCode IDE: add basic configuration for the Oracle Java extension Reviewed-by: ihse, jlahoda ------------- PR: https://git.openjdk.org/jdk/pull/26759 From mhaessig at openjdk.org Fri Aug 15 08:58:16 2025 From: mhaessig at openjdk.org (Manuel =?UTF-8?B?SMOkc3NpZw==?=) Date: Fri, 15 Aug 2025 08:58:16 GMT Subject: RFR: 8365491: VSCode IDE: add basic configuration for the Oracle Java extension [v3] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 06:36:46 GMT, Manuel H?ssig wrote: >> This PR adds a basic configuration for the [Oracle Java VSCode extension](https://marketplace.visualstudio.com/items?itemName=Oracle.oracle-java) to the `vscode-project-*` targets. > > Manuel H?ssig has updated the pull request incrementally with one additional commit since the last revision: > > Enable nbjavac Thank you for your reviews! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26759#issuecomment-3190987969 From vyazici at openjdk.org Fri Aug 15 10:37:10 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Fri, 15 Aug 2025 10:37:10 GMT Subject: RFR: 8365244: Some test control variables are undocumented in doc/testing.md In-Reply-To: <5uNZtKOqPnenKtj5rY5JdCmHdBMQ--gEFXf4sSVK8Zc=.3fa312cb-c8f2-42c2-b08b-d0916c0dafa3@github.com> References: <-jmAeutoR_uvUA8g482hM530yYF_hYjHuWqhSj__h0M=.59205b71-dba1-46ca-be79-eb7bfcf043a3@github.com> <5uNZtKOqPnenKtj5rY5JdCmHdBMQ--gEFXf4sSVK8Zc=.3fa312cb-c8f2-42c2-b08b-d0916c0dafa3@github.com> Message-ID: On Thu, 14 Aug 2025 19:38:39 GMT, Erik Joelsson wrote: >> Synchronize `make/RunTests.gmk` keyword variables with `doc/testing.{md,html}`. > > Marked as reviewed by erikj (Reviewer). @erikj79, thanks for the review. ? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26789#issuecomment-3191215905 From vyazici at openjdk.org Fri Aug 15 10:40:15 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Fri, 15 Aug 2025 10:40:15 GMT Subject: Integrated: 8365244: Some test control variables are undocumented in doc/testing.md In-Reply-To: <-jmAeutoR_uvUA8g482hM530yYF_hYjHuWqhSj__h0M=.59205b71-dba1-46ca-be79-eb7bfcf043a3@github.com> References: <-jmAeutoR_uvUA8g482hM530yYF_hYjHuWqhSj__h0M=.59205b71-dba1-46ca-be79-eb7bfcf043a3@github.com> Message-ID: On Thu, 14 Aug 2025 19:26:29 GMT, Volkan Yazici wrote: > Synchronize `make/RunTests.gmk` keyword variables with `doc/testing.{md,html}`. This pull request has now been integrated. Changeset: 059b49b9 Author: Volkan Yazici URL: https://git.openjdk.org/jdk/commit/059b49b9551ad52f211613a3da2ac0a79deb5ed4 Stats: 32 lines in 2 files changed: 25 ins; 2 del; 5 mod 8365244: Some test control variables are undocumented in doc/testing.md Reviewed-by: erikj ------------- PR: https://git.openjdk.org/jdk/pull/26789 From lkorinth at openjdk.org Fri Aug 15 11:43:33 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Fri, 15 Aug 2025 11:43:33 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: > This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) > > In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). > > My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. > > These fixes have been created when I have ploughed through test cases: > JDK-8352719: Add an equals sign to the modules statement > JDK-8352709: Remove bad timing annotations from WhileOpTest.java > JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test > CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE > CODETOOLS-7903961: Make default timeout configurable > > After the review, I will update the copyrights. > > I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. > > I got 4 timing related faults: > 1) runtime/Thread/TestThreadDumpMonitorContention.java > This is probably: https://bugs.openjdk.org/browse/JDK-8361370 > 2) sun/tools/jhsdb/BasicLauncherTest.java > I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. > 3) gc/stress/TestReclaimStringsLeaksMemory.java > I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. > 4) sun/security/ssl/X509KeyManager/CertChecking.java > This is a new test that I got on last rebase. I have added a timeout of 480 to it. > > In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. > > From the review of the cancelled "8356171: Increase timeout for test cases as preparation for change of... Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: added extra timeout for: jdk/internal/vm/Continuation/BasicExt.java#COMP_WINDOW_LENGTH_{1-3}-GC_AFTER_YIELD ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26749/files - new: https://git.openjdk.org/jdk/pull/26749/files/dbe42964..8fa40e7d Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26749&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26749&range=01-02 Stats: 3 lines in 1 file changed: 0 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/26749.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26749/head:pull/26749 PR: https://git.openjdk.org/jdk/pull/26749 From lkorinth at openjdk.org Fri Aug 15 11:59:12 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Fri, 15 Aug 2025 11:59:12 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 11:43:33 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > added extra timeout for: jdk/internal/vm/Continuation/BasicExt.java#COMP_WINDOW_LENGTH_{1-3}-GC_AFTER_YIELD Added three new `/timeout=480` after the last run. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3191343090 From duke at openjdk.org Fri Aug 15 13:38:16 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Fri, 15 Aug 2025 13:38:16 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v11] In-Reply-To: References: <-Sya8z4PLvQEJQO1dWl5a31ZEFBg5eBrzUjSv5PVGNo=.0e9484ba-8a5e-475a-abd6-05b6e441bd4c@github.com> Message-ID: <_mDI_WpB9sqgKfdByZVen_cmEklkavJHh8hEQ_6OwZE=.7593f277-3d0f-42bb-bf08-a1456adaf53e@github.com> On Thu, 14 Aug 2025 09:27:24 GMT, Magnus Ihse Bursie wrote: > If I recall correctly the original approach was even simpler: I counted the number of #includes in the C++ source files, not in the dependency files of a particular build. Crude but effective, and left out discussions about differences between platforms and feature configurations. And then I had to do some adjustments for Windows where my approach of excluding inline files did not hold and caused a regression. That was also the initial approach in this PR, I got the suggestion from the first comments I got here. > But then again, this is basically an optimization problem (even if it is not about running code in the JVM, but about optimizing build speed) so there is no way around the mantra of measure, measure and measure again. Yeah I see, I'll give it another shot next week. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3191518492 From stuefe at openjdk.org Fri Aug 15 14:05:11 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Fri, 15 Aug 2025 14:05:11 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 09:55:20 GMT, Magnus Ihse Bursie wrote: > According to https://github.com/openjdk/jdk/pull/26661#issuecomment-3162014034, we should not build gtest with `/EHsc`. > > I can honestly say I don't fully understand the consequences of this change, but at least it passes building and testing on Oracle CI. And it does seem to make sense that we build the gtest version of libjvm as close as possible to the real version. For libgtest I just thought it was prudent to keep the flags in sync with how we build libjvm. This might not be the correct decision. > > I have not tested how or if this affects the ability for gtest to handle bugs or crashes in the JVM, nor do I really have any idea about any such consequences. This PR is opened more to start a discussion than with the intention of just integrating this. Marked as reviewed by stuefe (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26721#pullrequestreview-3123934019 From stuefe at openjdk.org Fri Aug 15 14:05:12 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Fri, 15 Aug 2025 14:05:12 GMT Subject: RFR: 8365231: Don't build gtest with /EHsc In-Reply-To: <7oSTN3OqyJEONNvAXOfbMmtW_yNV5YjZzTnAnMrn468=.d4f4ec82-de95-43f2-82b1-389356f6e5e0@github.com> References: <0ZkEvZU21ZoNvU4yLgG-__yzcQu9kvlHmKBWWAczTKs=.f439c395-de47-423b-af9d-0f999e7d7825@github.com> <7oSTN3OqyJEONNvAXOfbMmtW_yNV5YjZzTnAnMrn468=.d4f4ec82-de95-43f2-82b1-389356f6e5e0@github.com> Message-ID: On Fri, 15 Aug 2025 06:45:35 GMT, Julian Waters wrote: >>> But `-fno-exceptions` _is_ used for gcc (and probably for clang, though I've not checked). Verified by examination of ".o.cmdline" files for both libgtest and the HotSpot gtests. >> >> Oh, and once again, thank you thank you thank you for the ".o.cmdline" files! > >> But `-fno-exceptions` _is_ used for gcc > > -fno-exceptions to my knowledge is only set in TOOLCHAIN_CFLAGS_JVM and for adlc compiled for Linux. That must mean gtest uses the same flags that the regular JVM does. I was not aware of that, so that would make my previous statement incorrect. > > I feel uncomfortable about switching off this warning. I agree with @TheShermanTanker there. Seems to me that if the compiler warns me that I should enable exceptions, I should do that instead of disabling the warning? > > As Kim wrote, this seems to be about a bug in the compiler. If you include certain standard headers (``), the compiler will give this warning, regardless if you use any functions from the header or not, if you compile with exceptions disabled. > > Our normal libjvm is compiled with exceptions disabled. It makes sense to run tests on a build that is as close as possible to the real thing, so we should compile libjvm for gtest with exceptions disabled, too. Okay, so we switch the risk of mismatched tests (since we are compiled with a different setting than the production JVM) with the risk of strange errors should we accidentally trigger C++ exceptions in the googletest framework or in system libraries used by it. I guess I can see the logic. Okay. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26721#issuecomment-3191577136 From syan at openjdk.org Fri Aug 15 14:08:12 2025 From: syan at openjdk.org (SendaoYan) Date: Fri, 15 Aug 2025 14:08:12 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 11:43:33 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > added extra timeout for: jdk/internal/vm/Continuation/BasicExt.java#COMP_WINDOW_LENGTH_{1-3}-GC_AFTER_YIELD make/RunTests.gmk line 940: > 938: JTREG_AUTO_PROBLEM_LISTS := > 939: # Please reach consensus before changing this. It was not easy changing it to a `1`. > 940: JTREG_AUTO_TIMEOUT_FACTOR := 1 Since the default value of JTREG_AUTO_TIMEOUT_FACTOR set to 1 by default, then the value of [JTREG_AUTO_TIMEOUT_FACTOR](https://github.com/lkorinth/jdk/blob/dbe42964371a38b2c6cd9e842c5b28ca4ac15506/make/RunTests.gmk#L944) when run with -Xcomp should be change from 10 to 2.5() ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2279056261 From fgao at openjdk.org Fri Aug 15 14:18:57 2025 From: fgao at openjdk.org (Fei Gao) Date: Fri, 15 Aug 2025 14:18:57 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern [v2] In-Reply-To: References: Message-ID: > `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. > > `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. > > Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. > > I did not encounter similar problems when building with Clang-16 [6]. > > This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding > > Testing (combined with https://github.com/openjdk/jdk/pull/26577): > 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 > 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines > > [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init > [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed > [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html > [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh > [5] https://bugs.openjdk.org/browse/JDK-8364185 > [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html Fei Gao has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision: - Add flag in debug builds and nothing in release builds - Merge branch 'master' into switch-pattern-to-zero - 8365312: __builtin_clear_padding not supported for variable length aggregates `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. I did not encounter similar problems when building with Clang-16 [6]. This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding Testing (combined with https://github.com/openjdk/jdk/pull/26577): 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh [5] https://bugs.openjdk.org/browse/JDK-8364185 [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26755/files - new: https://git.openjdk.org/jdk/pull/26755/files/e8bfe2b5..242ba542 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26755&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26755&range=00-01 Stats: 15102 lines in 428 files changed: 8123 ins; 5212 del; 1767 mod Patch: https://git.openjdk.org/jdk/pull/26755.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26755/head:pull/26755 PR: https://git.openjdk.org/jdk/pull/26755 From fgao at openjdk.org Fri Aug 15 14:18:58 2025 From: fgao at openjdk.org (Fei Gao) Date: Fri, 15 Aug 2025 14:18:58 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 09:16:15 GMT, Fei Gao wrote: > `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. > > `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. > > Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. > > I did not encounter similar problems when building with Clang-16 [6]. > > This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding > > Testing (combined with https://github.com/openjdk/jdk/pull/26577): > 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 > 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines > > [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init > [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed > [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html > [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh > [5] https://bugs.openjdk.org/browse/JDK-8364185 > [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html > tier1, tier2, tier3 testing of this and #26577 completed without any related failures. Once the PR is approved (I see Kim has suggested some changes), I will run a final round of tests. Thanks a lot for your help! @jaikiran ------------- PR Comment: https://git.openjdk.org/jdk/pull/26755#issuecomment-3191608837 From fgao at openjdk.org Fri Aug 15 14:18:58 2025 From: fgao at openjdk.org (Fei Gao) Date: Fri, 15 Aug 2025 14:18:58 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern [v2] In-Reply-To: <9e3JH2ZJGP1wW1i5pA56IHk2MKaOu-FTFv_xZrUlFu4=.5a879e52-753d-4b0d-b806-a9ae2de6104d@github.com> References: <9e3JH2ZJGP1wW1i5pA56IHk2MKaOu-FTFv_xZrUlFu4=.5a879e52-753d-4b0d-b806-a9ae2de6104d@github.com> Message-ID: <2IKFVSuqBXDLfk2E4YprOy3liO5_tuVTrA81m_osJmY=.ef604d55-6b75-4bbd-a451-dcb7a839609b@github.com> On Thu, 14 Aug 2025 09:43:12 GMT, Magnus Ihse Bursie wrote: >> make/autoconf/flags-cflags.m4 line 960: >> >>> 958: # avoids the use of unsupported `__builtin_clear_padding` for variable >>> 959: # length aggregates >>> 960: if test "x$TOOLCHAIN_TYPE" = xgcc ; then >> >> We only add `-ftrival-auto-var-init=pattern` when "x$DEBUG_LEVEL" != "xrelease", e.g. only in >> debug builds. I think we should only add the `=zero` flag in debug builds and nothing in release >> builds here too. > > I agree. Make sure to use the same test (DEBUG_LEVEL != release) to catch both fast and slow debug builds. That does make sense. Updated in the new commit. Thanks! @magicus @kimbarrett ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26755#discussion_r2279071503 From erikj at openjdk.org Fri Aug 15 14:30:10 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 15 Aug 2025 14:30:10 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 In-Reply-To: References: Message-ID: On Thu, 14 Aug 2025 23:59:23 GMT, Saint Wesonga wrote: > [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64. > > The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it). make/autoconf/toolchain.m4 line 668: > 666: # otherwise, the assembler is "ml.exe" > 667: UTIL_LOOKUP_TOOLCHAIN_PROGS(AS, ml) > 668: fi I think this would be more readable as an `elif` with all the cases on the same level rather than nesting the second if/else inside the else block. make/common/native/CompileFile.gmk line 239: > 237: $$(call ExecuteWithLog, $$@, $$(call MakeCommandRelative, \ > 238: $$($1_COMPILER) $$($1_FLAGS) \ > 239: $(CC_OUT_OPTION)$$($1_OBJ) $$($1_SRC_FILE))) \ Have you verified that removing `-Ta` works for the x86 assembler? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26791#discussion_r2279092729 PR Review Comment: https://git.openjdk.org/jdk/pull/26791#discussion_r2279090903 From lmesnik at openjdk.org Fri Aug 15 15:05:02 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Fri, 15 Aug 2025 15:05:02 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v7] In-Reply-To: References: Message-ID: <2ItmicHVzaK9RPwBO02peS25kLchdlRv_HvkYA7_qG4=.cb600cc0-ed51-426c-b093-c922e1a3e4d9@github.com> > The fix added JVMTI stress testing mode. > > This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. > > I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. > > The agent has 2 modes now: > - regular that is compatible with most of tests including other jvmti, jdi and jdb tests > - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests > > The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. > Note, that flagless tests are excluded automatically and not executed in this mode. Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: initialization of array fixed ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26360/files - new: https://git.openjdk.org/jdk/pull/26360/files/514ed252..0dc79e03 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=06 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26360&range=05-06 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26360.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26360/head:pull/26360 PR: https://git.openjdk.org/jdk/pull/26360 From duke at openjdk.org Fri Aug 15 15:46:58 2025 From: duke at openjdk.org (Saint Wesonga) Date: Fri, 15 Aug 2025 15:46:58 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v2] In-Reply-To: References: Message-ID: <7ZWjbpAEZ4BjtLQghAQsR8AlGmYAdNYbP98LAFtZzD4=.de75c686-1222-4f1a-8a0d-6392735efb85@github.com> > [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64. > > The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it). Saint Wesonga has updated the pull request incrementally with one additional commit since the last revision: Reduce nesting levels ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26791/files - new: https://git.openjdk.org/jdk/pull/26791/files/164bef5f..2ae8f30c Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26791&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26791&range=00-01 Stats: 10 lines in 1 file changed: 3 ins; 5 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/26791.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26791/head:pull/26791 PR: https://git.openjdk.org/jdk/pull/26791 From duke at openjdk.org Fri Aug 15 15:46:59 2025 From: duke at openjdk.org (Saint Wesonga) Date: Fri, 15 Aug 2025 15:46:59 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v2] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 14:26:00 GMT, Erik Joelsson wrote: > Have you verified that removing `-Ta` works for the x86 assembler? Yes, both of these command lines work: ; "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x86\ml.exe" -nologo -c -Fo test_x86_assembler.obj -Ta test_x86_assembler.S ; "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x86\ml.exe" -nologo -c -Fo test_x86_assembler.obj test_x86_assembler.S TEST_SEG SEGMENT mov eax, ecx TEST_SEG ENDS END ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26791#discussion_r2279328852 From jwaters at openjdk.org Fri Aug 15 16:45:13 2025 From: jwaters at openjdk.org (Julian Waters) Date: Fri, 15 Aug 2025 16:45:13 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v2] In-Reply-To: <7ZWjbpAEZ4BjtLQghAQsR8AlGmYAdNYbP98LAFtZzD4=.de75c686-1222-4f1a-8a0d-6392735efb85@github.com> References: <7ZWjbpAEZ4BjtLQghAQsR8AlGmYAdNYbP98LAFtZzD4=.de75c686-1222-4f1a-8a0d-6392735efb85@github.com> Message-ID: On Fri, 15 Aug 2025 15:46:58 GMT, Saint Wesonga wrote: >> [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64. >> >> The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it). > > Saint Wesonga has updated the pull request incrementally with one additional commit since the last revision: > > Reduce nesting levels This is still ok with me ------------- Marked as reviewed by jwaters (Committer). PR Review: https://git.openjdk.org/jdk/pull/26791#pullrequestreview-3124502265 From jwaters at openjdk.org Fri Aug 15 16:45:14 2025 From: jwaters at openjdk.org (Julian Waters) Date: Fri, 15 Aug 2025 16:45:14 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v2] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 15:43:45 GMT, Saint Wesonga wrote: >> make/common/native/CompileFile.gmk line 239: >> >>> 237: $$(call ExecuteWithLog, $$@, $$(call MakeCommandRelative, \ >>> 238: $$($1_COMPILER) $$($1_FLAGS) \ >>> 239: $(CC_OUT_OPTION)$$($1_OBJ) $$($1_SRC_FILE))) \ >> >> Have you verified that removing `-Ta` works for the x86 assembler? > >> Have you verified that removing `-Ta` works for the x86 assembler? > > Yes, both of these command lines work: > > > ; "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x86\ml.exe" -nologo -c -Fo test_x86_assembler.obj -Ta test_x86_assembler.S > ; "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x86\ml.exe" -nologo -c -Fo test_x86_assembler.obj test_x86_assembler.S > > TEST_SEG SEGMENT > > mov eax, ecx > > TEST_SEG ENDS > > END I wonder why we still have the assembler for 32 bit, as the JDK no longer supports 32 bit Windows ever since Magnus nuked it from the codebase ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26791#discussion_r2279458499 From erikj at openjdk.org Fri Aug 15 16:57:15 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 15 Aug 2025 16:57:15 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v7] In-Reply-To: <2ItmicHVzaK9RPwBO02peS25kLchdlRv_HvkYA7_qG4=.cb600cc0-ed51-426c-b093-c922e1a3e4d9@github.com> References: <2ItmicHVzaK9RPwBO02peS25kLchdlRv_HvkYA7_qG4=.cb600cc0-ed51-426c-b093-c922e1a3e4d9@github.com> Message-ID: On Fri, 15 Aug 2025 15:05:02 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: > > initialization of array fixed Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26360#pullrequestreview-3124547850 From erikj at openjdk.org Fri Aug 15 16:59:14 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Fri, 15 Aug 2025 16:59:14 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v2] In-Reply-To: <7ZWjbpAEZ4BjtLQghAQsR8AlGmYAdNYbP98LAFtZzD4=.de75c686-1222-4f1a-8a0d-6392735efb85@github.com> References: <7ZWjbpAEZ4BjtLQghAQsR8AlGmYAdNYbP98LAFtZzD4=.de75c686-1222-4f1a-8a0d-6392735efb85@github.com> Message-ID: On Fri, 15 Aug 2025 15:46:58 GMT, Saint Wesonga wrote: >> [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64. >> >> The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it). > > Saint Wesonga has updated the pull request incrementally with one additional commit since the last revision: > > Reduce nesting levels Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26791#pullrequestreview-3124553719 From duke at openjdk.org Fri Aug 15 17:34:13 2025 From: duke at openjdk.org (duke) Date: Fri, 15 Aug 2025 17:34:13 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v2] In-Reply-To: <7ZWjbpAEZ4BjtLQghAQsR8AlGmYAdNYbP98LAFtZzD4=.de75c686-1222-4f1a-8a0d-6392735efb85@github.com> References: <7ZWjbpAEZ4BjtLQghAQsR8AlGmYAdNYbP98LAFtZzD4=.de75c686-1222-4f1a-8a0d-6392735efb85@github.com> Message-ID: On Fri, 15 Aug 2025 15:46:58 GMT, Saint Wesonga wrote: >> [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64. >> >> The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it). > > Saint Wesonga has updated the pull request incrementally with one additional commit since the last revision: > > Reduce nesting levels @swesonga Your change (at version 2ae8f30cbab75081c7840019997460c03bfd82c2) is now ready to be sponsored by a Committer. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26791#issuecomment-3192263733 From lmesnik at openjdk.org Fri Aug 15 17:36:12 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Fri, 15 Aug 2025 17:36:12 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v7] In-Reply-To: <2ItmicHVzaK9RPwBO02peS25kLchdlRv_HvkYA7_qG4=.cb600cc0-ed51-426c-b093-c922e1a3e4d9@github.com> References: <2ItmicHVzaK9RPwBO02peS25kLchdlRv_HvkYA7_qG4=.cb600cc0-ed51-426c-b093-c922e1a3e4d9@github.com> Message-ID: On Fri, 15 Aug 2025 15:05:02 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: > > initialization of array fixed Thanks! I fixed cpp issue. Interesting that our builds worked before. Re-run tier1 to verify builds. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26360#issuecomment-3192267556 From ihse at openjdk.org Fri Aug 15 22:39:11 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Fri, 15 Aug 2025 22:39:11 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v7] In-Reply-To: <2ItmicHVzaK9RPwBO02peS25kLchdlRv_HvkYA7_qG4=.cb600cc0-ed51-426c-b093-c922e1a3e4d9@github.com> References: <2ItmicHVzaK9RPwBO02peS25kLchdlRv_HvkYA7_qG4=.cb600cc0-ed51-426c-b093-c922e1a3e4d9@github.com> Message-ID: On Fri, 15 Aug 2025 15:05:02 GMT, Leonid Mesnik wrote: >> The fix added JVMTI stress testing mode. >> >> This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. >> >> I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. >> >> The agent has 2 modes now: >> - regular that is compatible with most of tests including other jvmti, jdi and jdb tests >> - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests >> >> The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. >> Note, that flagless tests are excluded automatically and not executed in this mode. > > Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision: > > initialization of array fixed LGTMN. ------------- Marked as reviewed by ihse (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26360#pullrequestreview-3125301189 From ihse at openjdk.org Fri Aug 15 22:40:13 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Fri, 15 Aug 2025 22:40:13 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern [v2] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 14:18:57 GMT, Fei Gao wrote: >> `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. >> >> `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. >> >> Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. >> >> I did not encounter similar problems when building with Clang-16 [6]. >> >> This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding >> >> Testing (combined with https://github.com/openjdk/jdk/pull/26577): >> 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 >> 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines >> >> [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init >> [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed >> [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html >> [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh >> [5] https://bugs.openjdk.org/browse/JDK-8364185 >> [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html > > Fei Gao has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision: > > - Add flag in debug builds and nothing in release builds > - Merge branch 'master' into switch-pattern-to-zero > - 8365312: __builtin_clear_padding not supported for variable length aggregates > > `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added > recently to help detect uses of uninitialized memory. [2] Under > this extension mode, `__builtin_clear_padding` is called to clear > the padding bits in object representation. But the builtin function > does not support variable length aggregates [3]. > > `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is > defined as an opaque sizeless type in ARM C Language Extensions > (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, > it triggers the unsupported code path and results in build failures > when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. > > Switching the initialization mode with gcc-12 from `pattern` to `zero` > avoids the use of this unsupported `__builtin_clear_padding` and > resolves the issue. > > I did not encounter similar problems when building with Clang-16 [6]. > > This patch changes the initialization mode from `pattern` to `zero` > when compiling libsleef SVE component on Linux-AArch64 with gcc-12 > to fix the build failure and help avoid potential security issues > related to uninitialized padding > > Testing (combined with https://github.com/openjdk/jdk/pull/26577): > 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 > 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and > NEON machines > > [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init > [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed > [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html > [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh > [5] https://bugs.openjdk.org/browse/JDK-8364185 > [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html LGTMN ------------- Marked as reviewed by ihse (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26755#pullrequestreview-3125301907 From lmesnik at openjdk.org Fri Aug 15 22:48:20 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Fri, 15 Aug 2025 22:48:20 GMT Subject: RFR: 8364973: Add JVMTI stress testing mode [v5] In-Reply-To: References: Message-ID: On Thu, 14 Aug 2025 21:15:34 GMT, Magnus Ihse Bursie wrote: >> Makefile changes look good now. >> >> I think this new option should be documented in testing.md/html. > >> I think this new option should be documented in testing.md/html. > > Yes, I agree. I tried to ask for this above. @lmesnik When you have updated the markdown file, run `make update-build-docs` to generate the html version. @magicus , @erikj79, @sspitsyn Thank you for review! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26360#issuecomment-3192942142 From lmesnik at openjdk.org Fri Aug 15 22:48:22 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Fri, 15 Aug 2025 22:48:22 GMT Subject: Integrated: 8364973: Add JVMTI stress testing mode In-Reply-To: References: Message-ID: <454Ns3j_zbqBf1aNJiYQyTBmat468MpZ30TwMz3oDQY=.1d612ec3-8190-4618-b76a-f012601244c8@github.com> On Thu, 17 Jul 2025 02:39:15 GMT, Leonid Mesnik wrote: > The fix added JVMTI stress testing mode. > > This mode enables stress agent that could be executed with jtreg test and help to ensure that jvmti functionality doesn't break the other JVM/JDK functionality. > > I filed few issues and more are coming. I want to push the agent so it is possible to provide reproduces for problems uncovered by this agent. > > The agent has 2 modes now: > - regular that is compatible with most of tests including other jvmti, jdi and jdb tests > - debugger, that additionally test some function requiring solo capabilities and not compatible with debugger and some jvmti tests > > The tests incompatible wiht agent (IR, CDS) and some individual tests from tier1 are excluded. There are not plans to support stable execution of all tests with agent right now. However it provokes some crashes worth to be used for exploratory testing. > Note, that flagless tests are excluded automatically and not executed in this mode. This pull request has now been integrated. Changeset: a70521c6 Author: Leonid Mesnik URL: https://git.openjdk.org/jdk/commit/a70521c62e0841895d71cce2c872bd12f1183e33 Stats: 1199 lines in 10 files changed: 1192 ins; 3 del; 4 mod 8364973: Add JVMTI stress testing mode Reviewed-by: erikj, ihse, sspitsyn ------------- PR: https://git.openjdk.org/jdk/pull/26360 From kbarrett at openjdk.org Fri Aug 15 23:43:13 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Fri, 15 Aug 2025 23:43:13 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern [v2] In-Reply-To: <2IKFVSuqBXDLfk2E4YprOy3liO5_tuVTrA81m_osJmY=.ef604d55-6b75-4bbd-a451-dcb7a839609b@github.com> References: <9e3JH2ZJGP1wW1i5pA56IHk2MKaOu-FTFv_xZrUlFu4=.5a879e52-753d-4b0d-b806-a9ae2de6104d@github.com> <2IKFVSuqBXDLfk2E4YprOy3liO5_tuVTrA81m_osJmY=.ef604d55-6b75-4bbd-a451-dcb7a839609b@github.com> Message-ID: <10g0iPiQojYL5nY_Ifr8Dq-GfTdwSGwknNC-3vQsPPs=.1d1b012a-c4cf-4b83-8b91-b48a2192a6da@github.com> On Fri, 15 Aug 2025 14:14:41 GMT, Fei Gao wrote: >> I agree. Make sure to use the same test (DEBUG_LEVEL != release) to catch both fast and slow debug builds. > > That does make sense. Updated in the new commit. Thanks! @magicus @kimbarrett I think using `DEBUG_LEVEL != release` isn't right for either of these places, since it means we're adding the option for "optimize" builds. But doing so here is consistent. I will file a separate issue to address the "optimize" build case" ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26755#discussion_r2280030665 From kbarrett at openjdk.org Fri Aug 15 23:43:12 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Fri, 15 Aug 2025 23:43:12 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern [v2] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 14:18:57 GMT, Fei Gao wrote: >> `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. >> >> `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. >> >> Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. >> >> I did not encounter similar problems when building with Clang-16 [6]. >> >> This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding >> >> Testing (combined with https://github.com/openjdk/jdk/pull/26577): >> 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 >> 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines >> >> [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init >> [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed >> [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html >> [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh >> [5] https://bugs.openjdk.org/browse/JDK-8364185 >> [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html > > Fei Gao has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision: > > - Add flag in debug builds and nothing in release builds > - Merge branch 'master' into switch-pattern-to-zero > - 8365312: __builtin_clear_padding not supported for variable length aggregates > > `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added > recently to help detect uses of uninitialized memory. [2] Under > this extension mode, `__builtin_clear_padding` is called to clear > the padding bits in object representation. But the builtin function > does not support variable length aggregates [3]. > > `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is > defined as an opaque sizeless type in ARM C Language Extensions > (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, > it triggers the unsupported code path and results in build failures > when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. > > Switching the initialization mode with gcc-12 from `pattern` to `zero` > avoids the use of this unsupported `__builtin_clear_padding` and > resolves the issue. > > I did not encounter similar problems when building with Clang-16 [6]. > > This patch changes the initialization mode from `pattern` to `zero` > when compiling libsleef SVE component on Linux-AArch64 with gcc-12 > to fix the build failure and help avoid potential security issues > related to uninitialized padding > > Testing (combined with https://github.com/openjdk/jdk/pull/26577): > 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 > 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and > NEON machines > > [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init > [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed > [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html > [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh > [5] https://bugs.openjdk.org/browse/JDK-8364185 > [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html Looks good. ------------- Marked as reviewed by kbarrett (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26755#pullrequestreview-3125356783 From kbarrett at openjdk.org Sat Aug 16 00:04:10 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Sat, 16 Aug 2025 00:04:10 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern [v2] In-Reply-To: <10g0iPiQojYL5nY_Ifr8Dq-GfTdwSGwknNC-3vQsPPs=.1d1b012a-c4cf-4b83-8b91-b48a2192a6da@github.com> References: <9e3JH2ZJGP1wW1i5pA56IHk2MKaOu-FTFv_xZrUlFu4=.5a879e52-753d-4b0d-b806-a9ae2de6104d@github.com> <2IKFVSuqBXDLfk2E4YprOy3liO5_tuVTrA81m_osJmY=.ef604d55-6b75-4bbd-a451-dcb7a839609b@github.com> <10g0iPiQojYL5nY_Ifr8Dq-GfTdwSGwknNC-3vQsPPs=.1d1b012a-c4cf-4b83-8b91-b48a2192a6da@github.com> Message-ID: On Fri, 15 Aug 2025 23:40:34 GMT, Kim Barrett wrote: >> That does make sense. Updated in the new commit. Thanks! @magicus @kimbarrett > > I think using `DEBUG_LEVEL != release` isn't right for either of these places, since it means we're adding > the option for "optimize" builds. But doing so here is consistent. I will file a separate issue to address the > "optimize" build case" Actually, I think I'm wrong about that. DEBUG_LEVEL is never "optimized", only HOTSPOT_DEBUG_LEVEL uses that value. If DEBUG_LEVEL is initially "optimized" it gets forced to "release" in the --with-debug-level handling. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26755#discussion_r2280042546 From jpai at openjdk.org Mon Aug 18 02:05:15 2025 From: jpai at openjdk.org (Jaikiran Pai) Date: Mon, 18 Aug 2025 02:05:15 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern [v2] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 14:18:57 GMT, Fei Gao wrote: >> `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. >> >> `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. >> >> Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. >> >> I did not encounter similar problems when building with Clang-16 [6]. >> >> This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding >> >> Testing (combined with https://github.com/openjdk/jdk/pull/26577): >> 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 >> 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines >> >> [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init >> [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed >> [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html >> [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh >> [5] https://bugs.openjdk.org/browse/JDK-8364185 >> [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html > > Fei Gao has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision: > > - Add flag in debug builds and nothing in release builds > - Merge branch 'master' into switch-pattern-to-zero > - 8365312: __builtin_clear_padding not supported for variable length aggregates > > `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added > recently to help detect uses of uninitialized memory. [2] Under > this extension mode, `__builtin_clear_padding` is called to clear > the padding bits in object representation. But the builtin function > does not support variable length aggregates [3]. > > `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is > defined as an opaque sizeless type in ARM C Language Extensions > (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, > it triggers the unsupported code path and results in build failures > when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. > > Switching the initialization mode with gcc-12 from `pattern` to `zero` > avoids the use of this unsupported `__builtin_clear_padding` and > resolves the issue. > > I did not encounter similar problems when building with Clang-16 [6]. > > This patch changes the initialization mode from `pattern` to `zero` > when compiling libsleef SVE component on Linux-AArch64 with gcc-12 > to fix the build failure and help avoid potential security issues > related to uninitialized padding > > Testing (combined with https://github.com/openjdk/jdk/pull/26577): > 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 > 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and > NEON machines > > [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init > [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed > [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html > [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh > [5] https://bugs.openjdk.org/browse/JDK-8364185 > [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html tier1, tier2 and tier3 testing of the latest state of this PR and https://github.com/openjdk/jdk/pull/26577 against latest JDK master branch completed successfully. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26755#issuecomment-3194869535 From syan at openjdk.org Mon Aug 18 07:07:18 2025 From: syan at openjdk.org (SendaoYan) Date: Mon, 18 Aug 2025 07:07:18 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v2] In-Reply-To: <7ZWjbpAEZ4BjtLQghAQsR8AlGmYAdNYbP98LAFtZzD4=.de75c686-1222-4f1a-8a0d-6392735efb85@github.com> References: <7ZWjbpAEZ4BjtLQghAQsR8AlGmYAdNYbP98LAFtZzD4=.de75c686-1222-4f1a-8a0d-6392735efb85@github.com> Message-ID: <3-MvAbK7qGpsTlpQAEzwNFpIVH_Z1QJWlUEE5EKofNk=.d5b1767c-1e72-4177-bb6f-21641f5d8f46@github.com> On Fri, 15 Aug 2025 15:46:58 GMT, Saint Wesonga wrote: >> [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64. >> >> The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it). > > Saint Wesonga has updated the pull request incrementally with one additional commit since the last revision: > > Reduce nesting levels make/autoconf/flags-other.m4 line 118: > 116: BASIC_ASFLAGS="-x assembler-with-cpp" > 117: elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then > 118: BASIC_ASFLAGS="-nologo -c" Should we need to update the copyright year from 2024 to 2025 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26791#discussion_r2281479220 From lkorinth at openjdk.org Mon Aug 18 09:10:13 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Mon, 18 Aug 2025 09:10:13 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 14:05:49 GMT, SendaoYan wrote: >> Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: >> >> added extra timeout for: jdk/internal/vm/Continuation/BasicExt.java#COMP_WINDOW_LENGTH_{1-3}-GC_AFTER_YIELD > > make/RunTests.gmk line 940: > >> 938: JTREG_AUTO_PROBLEM_LISTS := >> 939: # Please reach consensus before changing this. It was not easy changing it to a `1`. >> 940: JTREG_AUTO_TIMEOUT_FACTOR := 1 > > Since the default value of JTREG_AUTO_TIMEOUT_FACTOR set to 1 by default, then the value of [JTREG_AUTO_TIMEOUT_FACTOR](https://github.com/lkorinth/jdk/blob/dbe42964371a38b2c6cd9e842c5b28ca4ac15506/make/RunTests.gmk#L944) when run with -Xcomp should be change from 10 to 2.5() It is unclear to me if the author meant this to be `2.5` more than normal or `10` more than JTREG default, or a `multiplier that seems to work`. It does not bother me _more_ if it is a `10` then a `2.5`, as it needs to have a value that is not the multiplicative identity value. I will not change this, the change I have made is already large enough and I want this to be integrated ASAP. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2281781536 From lkorinth at openjdk.org Mon Aug 18 09:18:12 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Mon, 18 Aug 2025 09:18:12 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: On Mon, 18 Aug 2025 09:07:54 GMT, Leo Korinth wrote: >> make/RunTests.gmk line 940: >> >>> 938: JTREG_AUTO_PROBLEM_LISTS := >>> 939: # Please reach consensus before changing this. It was not easy changing it to a `1`. >>> 940: JTREG_AUTO_TIMEOUT_FACTOR := 1 >> >> Since the default value of JTREG_AUTO_TIMEOUT_FACTOR set to 1 by default, then the value of [JTREG_AUTO_TIMEOUT_FACTOR](https://github.com/lkorinth/jdk/blob/dbe42964371a38b2c6cd9e842c5b28ca4ac15506/make/RunTests.gmk#L944) when run with -Xcomp should be change from 10 to 2.5() > > It is unclear to me if the author meant this to be `2.5` more than normal or `10` more than JTREG default, or a `multiplier that seems to work`. It does not bother me _more_ if it is a `10` then a `2.5`, as it needs to have a value that is not the multiplicative identity value. I will not change this, the change I have made is already large enough and I want this to be integrated ASAP. It is also something that can be changed later, in a follow up fix. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2281802454 From lkorinth at openjdk.org Mon Aug 18 09:36:13 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Mon, 18 Aug 2025 09:36:13 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v2] In-Reply-To: References: Message-ID: <3l5I9q7S4O_0gH6mvxy3P21f1JxqcQKNsnBTN7rWhmc=.ddcf4337-dc6e-493d-ae07-5bd4affb9321@github.com> On Thu, 14 Aug 2025 19:30:30 GMT, Doug Simon wrote: > > I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. > > Would you mind also running tier9 to avoid surprises there. I had problems doing this, and I just want to say that I have not run tier9 (I have talked to Douglas off-list). ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3195900610 From lkorinth at openjdk.org Mon Aug 18 09:43:14 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Mon, 18 Aug 2025 09:43:14 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: <9GMJWT-CNwqDVALuPdRR9EDs5G1c2jUr3y887qw2_EU=.1a7347a2-d1e5-427d-aeda-6924e2db39ba@github.com> On Fri, 15 Aug 2025 11:43:33 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > added extra timeout for: jdk/internal/vm/Continuation/BasicExt.java#COMP_WINDOW_LENGTH_{1-3}-GC_AFTER_YIELD If there are no mayor objections, I will update the copyrights before I leave work today. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3195923727 From dfuchs at openjdk.org Mon Aug 18 11:38:14 2025 From: dfuchs at openjdk.org (Daniel Fuchs) Date: Mon, 18 Aug 2025 11:38:14 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: <-1NjyGdZla4kxc5tKPvakW_aqwjNcNXt4ibAf3WndRU=.21ac795a-b7ee-44ac-a155-70e1186c8148@github.com> On Fri, 15 Aug 2025 11:43:33 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > added extra timeout for: jdk/internal/vm/Continuation/BasicExt.java#COMP_WINDOW_LENGTH_{1-3}-GC_AFTER_YIELD Hi Leo, I played a bit with your changes and I observed intermittent timeout failures for the following tests: java/net/httpclient/CancelledResponse.java java/net/httpclient/whitebox/FlowTestDriver.java The first test failing more frequently. Could you please add /timeout=480 to these two tests as well? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3196281299 From vyazici at openjdk.org Mon Aug 18 12:37:52 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Mon, 18 Aug 2025 12:37:52 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken In-Reply-To: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: <1n3auKF1Wf9oFo_JUNvE2aPXwsxggnoOjLsV49slvs4=.ca7b59fb-4404-41a8-a5ed-fcf66f6bd771@github.com> On Mon, 18 Aug 2025 12:29:50 GMT, Volkan Yazici wrote: > In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. I've noticed several architectures don't work for OL either, but I guess that is for another JBS-PR pair. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26821#issuecomment-3196524557 From vyazici at openjdk.org Mon Aug 18 12:37:52 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Mon, 18 Aug 2025 12:37:52 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken Message-ID: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. ------------- Commit messages: - Update build docs - Fix Fedora links - Remove `ppc64` Changes: https://git.openjdk.org/jdk/pull/26821/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26821&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8362243 Stats: 38 lines in 4 files changed: 12 ins; 9 del; 17 mod Patch: https://git.openjdk.org/jdk/pull/26821.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26821/head:pull/26821 PR: https://git.openjdk.org/jdk/pull/26821 From erikj at openjdk.org Mon Aug 18 12:55:13 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 18 Aug 2025 12:55:13 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v2] In-Reply-To: <3-MvAbK7qGpsTlpQAEzwNFpIVH_Z1QJWlUEE5EKofNk=.d5b1767c-1e72-4177-bb6f-21641f5d8f46@github.com> References: <7ZWjbpAEZ4BjtLQghAQsR8AlGmYAdNYbP98LAFtZzD4=.de75c686-1222-4f1a-8a0d-6392735efb85@github.com> <3-MvAbK7qGpsTlpQAEzwNFpIVH_Z1QJWlUEE5EKofNk=.d5b1767c-1e72-4177-bb6f-21641f5d8f46@github.com> Message-ID: On Mon, 18 Aug 2025 07:04:59 GMT, SendaoYan wrote: >> Saint Wesonga has updated the pull request incrementally with one additional commit since the last revision: >> >> Reduce nesting levels > > make/autoconf/flags-other.m4 line 118: > >> 116: BASIC_ASFLAGS="-x assembler-with-cpp" >> 117: elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then >> 118: BASIC_ASFLAGS="-nologo -c" > > Should we need to update the copyright year from 2024 to 2025 Yes, please that would be good. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26791#discussion_r2282312830 From erikj at openjdk.org Mon Aug 18 13:00:11 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 18 Aug 2025 13:00:11 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken In-Reply-To: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: On Mon, 18 Aug 2025 12:29:50 GMT, Volkan Yazici wrote: > In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. Marked as reviewed by erikj (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26821#pullrequestreview-3128266176 From rriggs at openjdk.org Mon Aug 18 13:15:11 2025 From: rriggs at openjdk.org (Roger Riggs) Date: Mon, 18 Aug 2025 13:15:11 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 11:43:33 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > added extra timeout for: jdk/internal/vm/Continuation/BasicExt.java#COMP_WINDOW_LENGTH_{1-3}-GC_AFTER_YIELD Generally, changes with this many changed files are broken down into smaller PRs to make the review easier and more conclusive. In this case, hotspot, jdk, and langtools might have been good groupings. The reviews could be done in parallel and committed with the final change to jtreg when they are all approved. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3196793327 From fgao at openjdk.org Mon Aug 18 13:22:16 2025 From: fgao at openjdk.org (Fei Gao) Date: Mon, 18 Aug 2025 13:22:16 GMT Subject: RFR: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern [v2] In-Reply-To: References: Message-ID: <3qSj-kBRInVNO_u-gawXQ429rSzzIIdBId8dBro4P4E=.7f89bea4-9a45-4780-a143-f76ca3dc1338@github.com> On Fri, 15 Aug 2025 14:18:57 GMT, Fei Gao wrote: >> `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. >> >> `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. >> >> Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. >> >> I did not encounter similar problems when building with Clang-16 [6]. >> >> This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding >> >> Testing (combined with https://github.com/openjdk/jdk/pull/26577): >> 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 >> 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines >> >> [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init >> [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed >> [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html >> [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh >> [5] https://bugs.openjdk.org/browse/JDK-8364185 >> [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html > > Fei Gao has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision: > > - Add flag in debug builds and nothing in release builds > - Merge branch 'master' into switch-pattern-to-zero > - 8365312: __builtin_clear_padding not supported for variable length aggregates > > `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added > recently to help detect uses of uninitialized memory. [2] Under > this extension mode, `__builtin_clear_padding` is called to clear > the padding bits in object representation. But the builtin function > does not support variable length aggregates [3]. > > `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is > defined as an opaque sizeless type in ARM C Language Extensions > (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, > it triggers the unsupported code path and results in build failures > when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. > > Switching the initialization mode with gcc-12 from `pattern` to `zero` > avoids the use of this unsupported `__builtin_clear_padding` and > resolves the issue. > > I did not encounter similar problems when building with Clang-16 [6]. > > This patch changes the initialization mode from `pattern` to `zero` > when compiling libsleef SVE component on Linux-AArch64 with gcc-12 > to fix the build failure and help avoid potential security issues > related to uninitialized padding > > Testing (combined with https://github.com/openjdk/jdk/pull/26577): > 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 > 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and > NEON machines > > [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init > [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed > [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html > [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh > [5] https://bugs.openjdk.org/browse/JDK-8364185 > [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html As suggested by @theRealAph in https://github.com/openjdk/jdk/pull/26577#issuecomment-3151114003, I?ve submitted a GCC bug report for this issue: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121584. Thanks so much for all your reviews @magicus @erikj79 @kimbarrett . And thank you for your testing @jaikiran ! I'll integrate it. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26755#issuecomment-3196835536 From shade at openjdk.org Mon Aug 18 14:01:12 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Mon, 18 Aug 2025 14:01:12 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken In-Reply-To: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: On Mon, 18 Aug 2025 12:29:50 GMT, Volkan Yazici wrote: > In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. Fedora changes look fine, but there is a stray update in docs that we should not be doing, AFAICS: doc/building.md line 1404: > 1402: | armel | buster | arm | arm-linux-gnueabi | zero | > 1403: | ppc | sid | powerpc | powerpc-linux-gnu | zero | > 1404: | ppc64be | sid | ppc64 | powerpc64-linux-gnu | (all) | This one is not about Fedora, but about Debian-based sysroot. I have not checked recently, but I suspect it would still work, as Debian PPC64 BE port is still alive: https://wiki.debian.org/PPC64 ------------- PR Review: https://git.openjdk.org/jdk/pull/26821#pullrequestreview-3128508467 PR Review Comment: https://git.openjdk.org/jdk/pull/26821#discussion_r2282495237 From lkorinth at openjdk.org Mon Aug 18 14:34:12 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Mon, 18 Aug 2025 14:34:12 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: On Mon, 18 Aug 2025 13:12:41 GMT, Roger Riggs wrote: > Generally, changes with this many changed files are broken down into smaller PRs to make the review easier and more conclusive. In this case, hotspot, jdk, and langtools might have been good groupings. The reviews could be done in parallel and committed with the final change to jtreg when they are all approved. Noted. I did it so reviewers could se the change "as a whole". Feel free to review a part of the change! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3197186029 From lmesnik at openjdk.org Mon Aug 18 15:01:12 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Mon, 18 Aug 2025 15:01:12 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 11:43:33 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > added extra timeout for: jdk/internal/vm/Continuation/BasicExt.java#COMP_WINDOW_LENGTH_{1-3}-GC_AFTER_YIELD Thank you for fixing this! I think the changes are good. ------------- Marked as reviewed by lmesnik (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26749#pullrequestreview-3128749995 From duke at openjdk.org Mon Aug 18 16:22:56 2025 From: duke at openjdk.org (Saint Wesonga) Date: Mon, 18 Aug 2025 16:22:56 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v3] In-Reply-To: References: Message-ID: <-z4DtbPqLk39gv-FXNmg_dvGnoLneAapGPYbojdWzP0=.78476c6b-5343-4c9f-bae9-710cd6cf545b@github.com> > [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64. > > The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it). Saint Wesonga has updated the pull request incrementally with one additional commit since the last revision: Update the copyright year ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26791/files - new: https://git.openjdk.org/jdk/pull/26791/files/2ae8f30c..3470f000 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26791&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26791&range=01-02 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26791.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26791/head:pull/26791 PR: https://git.openjdk.org/jdk/pull/26791 From duke at openjdk.org Mon Aug 18 16:27:14 2025 From: duke at openjdk.org (Saint Wesonga) Date: Mon, 18 Aug 2025 16:27:14 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v3] In-Reply-To: References: Message-ID: On Fri, 15 Aug 2025 16:42:09 GMT, Julian Waters wrote: > I wonder why we still have the assembler for 32 bit, as the JDK no longer supports 32 bit Windows ever since Magnus nuked it from the codebase I have filed https://bugs.openjdk.org/browse/JDK-8365707 to address that issue ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26791#discussion_r2282883070 From lkorinth at openjdk.org Mon Aug 18 16:34:21 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Mon, 18 Aug 2025 16:34:21 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v4] In-Reply-To: References: Message-ID: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> > This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) > > In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). > > My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. > > These fixes have been created when I have ploughed through test cases: > JDK-8352719: Add an equals sign to the modules statement > JDK-8352709: Remove bad timing annotations from WhileOpTest.java > JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test > CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE > CODETOOLS-7903961: Make default timeout configurable > > After the review, I will update the copyrights. > > I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. > > I got 4 timing related faults: > 1) runtime/Thread/TestThreadDumpMonitorContention.java > This is probably: https://bugs.openjdk.org/browse/JDK-8361370 > 2) sun/tools/jhsdb/BasicLauncherTest.java > I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. > 3) gc/stress/TestReclaimStringsLeaksMemory.java > I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. > 4) sun/security/ssl/X509KeyManager/CertChecking.java > This is a new test that I got on last rebase. I have added a timeout of 480 to it. > > In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. > > From the review of the cancelled "8356171: Increase timeout for test cases as preparation for change of... Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: after suggestion from Daniel ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26749/files - new: https://git.openjdk.org/jdk/pull/26749/files/8fa40e7d..286a2cc6 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26749&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26749&range=02-03 Stats: 3 lines in 2 files changed: 0 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/26749.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26749/head:pull/26749 PR: https://git.openjdk.org/jdk/pull/26749 From lkorinth at openjdk.org Mon Aug 18 16:34:22 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Mon, 18 Aug 2025 16:34:22 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: <-1NjyGdZla4kxc5tKPvakW_aqwjNcNXt4ibAf3WndRU=.21ac795a-b7ee-44ac-a155-70e1186c8148@github.com> References: <-1NjyGdZla4kxc5tKPvakW_aqwjNcNXt4ibAf3WndRU=.21ac795a-b7ee-44ac-a155-70e1186c8148@github.com> Message-ID: On Mon, 18 Aug 2025 11:34:39 GMT, Daniel Fuchs wrote: > Hi Leo, I played a bit with your changes and I observed intermittent timeout failures for the following tests: > > ``` > java/net/httpclient/CancelledResponse.java > java/net/httpclient/whitebox/FlowTestDriver.java > ``` > > The first test failing more frequently. Could you please add /timeout=480 to these two tests as well? Fixed! Thanks for helping! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3197614389 From dfuchs at openjdk.org Mon Aug 18 16:46:13 2025 From: dfuchs at openjdk.org (Daniel Fuchs) Date: Mon, 18 Aug 2025 16:46:13 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v4] In-Reply-To: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> References: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> Message-ID: On Mon, 18 Aug 2025 16:34:21 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > after suggestion from Daniel Thanks! Changes to JNDI / net / httpclient LGTM. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3197675337 From ihse at openjdk.org Mon Aug 18 19:32:38 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Mon, 18 Aug 2025 19:32:38 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken In-Reply-To: References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: On Mon, 18 Aug 2025 13:57:13 GMT, Aleksey Shipilev wrote: >> In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. > > doc/building.md line 1404: > >> 1402: | armel | buster | arm | arm-linux-gnueabi | zero | >> 1403: | ppc | sid | powerpc | powerpc-linux-gnu | zero | >> 1404: | ppc64be | sid | ppc64 | powerpc64-linux-gnu | (all) | > > This one is not about Fedora, but about Debian-based sysroot. I have not checked recently, but I suspect it would still work, as Debian PPC64 BE port is still alive: https://wiki.debian.org/PPC64 I think all our ppc64 code assumes le by now, so even if we could get a sysroot for ppc64be to work, I doubt it will do much good for the JDK. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26821#discussion_r2283261691 From syan at openjdk.org Tue Aug 19 03:34:47 2025 From: syan at openjdk.org (SendaoYan) Date: Tue, 19 Aug 2025 03:34:47 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: On Mon, 18 Aug 2025 09:15:29 GMT, Leo Korinth wrote: >> It is unclear to me if the author meant this to be `2.5` more than normal or `10` more than JTREG default, or a `multiplier that seems to work`. It does not bother me _more_ if it is a `10` then a `2.5`, as it needs to have a value that is not the multiplicative identity value. I will not change this, the change I have made is already large enough and I want this to be integrated ASAP. > > It is also something that can be changed later, in a follow up fix. Take test test/hotspot/jtreg/compiler/arraycopy/stress/TestStressArrayCopy.java as example. If there is a bug in jvm with -Xcomp option which will cause this test run time outed. Before this PR, it will take `7200*10` seconds to run this test finish and report time outed failure. But after this PR, it will take `28800*10` seconds to run this test finish ang then report timed out failure. I think the `28800*10` senonds too long and it's unacceptable. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2283972732 From vyazici at openjdk.org Tue Aug 19 05:14:43 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Tue, 19 Aug 2025 05:14:43 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken In-Reply-To: References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: On Mon, 18 Aug 2025 13:57:13 GMT, Aleksey Shipilev wrote: >> In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. > > doc/building.md line 1404: > >> 1402: | armel | buster | arm | arm-linux-gnueabi | zero | >> 1403: | ppc | sid | powerpc | powerpc-linux-gnu | zero | >> 1404: | ppc64be | sid | ppc64 | powerpc64-linux-gnu | (all) | > > This one is not about Fedora, but about Debian-based sysroot. I have not checked recently, but I suspect it would still work, as Debian PPC64 BE port is still alive: https://wiki.debian.org/PPC64 @shipilev, thanks so much for the review. ? I was thinking in the same with @magicus while removing this row. Do you still prefer to keep it? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26821#discussion_r2284076853 From dholmes at openjdk.org Tue Aug 19 05:25:40 2025 From: dholmes at openjdk.org (David Holmes) Date: Tue, 19 Aug 2025 05:25:40 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: On Tue, 19 Aug 2025 03:31:55 GMT, SendaoYan wrote: >> It is also something that can be changed later, in a follow up fix. > > Take test test/hotspot/jtreg/compiler/arraycopy/stress/TestStressArrayCopy.java as example. > If there is a bug in jvm with -Xcomp option which will cause this test run time outed. Before this PR, it will take `7200*10` seconds to run this test finish and report time outed failure. But after this PR, it will take `28800*10` seconds to run this test finish ang then report timed out failure. I think the `28800*10` senonds is too long and it's unacceptable. > It is unclear to me if the author meant this to be 2.5 more than normal or 10 more than JTREG default, or a multiplier that seems to work. What matters is that the actual timeout, in seconds, remains unchanged, so please address this. Timeouts that are excessively long waste machine resources. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2284090715 From dholmes at openjdk.org Tue Aug 19 05:49:44 2025 From: dholmes at openjdk.org (David Holmes) Date: Tue, 19 Aug 2025 05:49:44 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v4] In-Reply-To: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> References: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> Message-ID: On Mon, 18 Aug 2025 16:34:21 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > after suggestion from Daniel By rough count there are 1300 tests that have an explicit timeout set. This change would reduce the actual applied timeout to a quarter of what was previously used, yet you have only had to bump the timeout value for a fraction of the tests - which I find somewhat (pleasantly) surprising. It may be that many of these timeouts stem from a time when we had much much slower machines, so a refresh might not be a bad thing. It will take some time to see the full effects of this change though. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3199288818 From dholmes at openjdk.org Tue Aug 19 06:07:44 2025 From: dholmes at openjdk.org (David Holmes) Date: Tue, 19 Aug 2025 06:07:44 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: On Tue, 19 Aug 2025 05:23:15 GMT, David Holmes wrote: >> Take test test/hotspot/jtreg/compiler/arraycopy/stress/TestStressArrayCopy.java as example. >> If there is a bug in jvm with -Xcomp option which will cause this test run time outed. Before this PR, it will take `7200*10` seconds to run this test finish and report time outed failure. But after this PR, it will take `28800*10` seconds to run this test finish ang then report timed out failure. I think the `28800*10` senonds is too long and it's unacceptable. > > DELETED - I confused the timeout with the timeout-factor. New comment below. No change should be made to any explicit setting of the timeoutFactor in general as that could cause mass timeouts to occur (old default timeout = 120 * 10 = 1200 but new default = 120 * 2.5 = 300!). However I see the concern of @sendaoYan because individual tests may now get much larger timeout values when run with the non-default timeoutFactor because they have been adjusted for the new default. I don't see any solution to this dilemma. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2284161138 From syan at openjdk.org Tue Aug 19 06:40:45 2025 From: syan at openjdk.org (SendaoYan) Date: Tue, 19 Aug 2025 06:40:45 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: Message-ID: <5YehMZKBa60PIk9Ia2sC4kLuFx5ZvfmtoYT_H-LuQbM=.e40c421f-d2af-46e5-8dc7-5b30fe79c0b0@github.com> On Tue, 19 Aug 2025 06:04:49 GMT, David Holmes wrote: >> DELETED - I confused the timeout with the timeout-factor. New comment below. > > No change should be made to any explicit setting of the timeoutFactor in general as that could cause mass timeouts to occur (old default timeout = 120 * 10 = 1200 but new default = 120 * 2.5 = 300!). > > However I see the concern of @sendaoYan because individual tests may now get much larger timeout values when run with the non-default timeoutFactor because they have been adjusted for the new default. I don't see any solution to this dilemma. But what this PR do is change the timeoutFactor in general and find out all the tests which may timeout after the timeoutFactor has been changed. The old default timeout before this PR is 120 * 4, after this PR the new default is 120 * 1 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2284273170 From fgao at openjdk.org Tue Aug 19 08:25:50 2025 From: fgao at openjdk.org (Fei Gao) Date: Tue, 19 Aug 2025 08:25:50 GMT Subject: Integrated: 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern In-Reply-To: References: Message-ID: On Wed, 13 Aug 2025 09:16:15 GMT, Fei Gao wrote: > `-ftrivial-auto-var-init=pattern` [1] supported by gcc-12 was added recently to help detect uses of uninitialized memory. [2] Under this extension mode, `__builtin_clear_padding` is called to clear the padding bits in object representation. But the builtin function does not support variable length aggregates [3]. > > `vfloat2_sve_sleef` is a typedef of `svfloat32x2_t`, which is defined as an opaque sizeless type in ARM C Language Extensions (ACLE) [4]. When `__builtin_clear_padding` is applied to such a type, it triggers the unsupported code path and results in build failures when compiling libsleef on Linux-AArch64, as reported in JDK-8364185 [5]. > > Switching the initialization mode with gcc-12 from `pattern` to `zero` avoids the use of this unsupported `__builtin_clear_padding` and resolves the issue. > > I did not encounter similar problems when building with Clang-16 [6]. > > This patch changes the initialization mode from `pattern` to `zero` when compiling libsleef SVE component on Linux-AArch64 with gcc-12 to fix the build failure and help avoid potential security issues related to uninitialized padding > > Testing (combined with https://github.com/openjdk/jdk/pull/26577): > 1. Release and fastdebug build with gcc-11, gcc-12, and clang-16 > 2. `test/jdk/jdk/incubator/vector` passed on both 256-bit SVE and NEON machines > > [1] https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init > [2] https://github.com/openjdk/jdk/commit/fae37aaae8b36fd74309b84fa1fdf017c7d932ed > [3] https://gcc.gnu.org/pipermail/gcc-patches/2020-November/559214.html > [4] https://arm-software.github.io/acle/main/acle.html#arm_sveh > [5] https://bugs.openjdk.org/browse/JDK-8364185 > [6] https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html This pull request has now been integrated. Changeset: 999761d0 Author: Fei Gao URL: https://git.openjdk.org/jdk/commit/999761d0f6d37c9cd6ec482620800b694c5fb9ad Stats: 11 lines in 1 file changed: 11 ins; 0 del; 0 mod 8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern Reviewed-by: kbarrett, ihse, erikj ------------- PR: https://git.openjdk.org/jdk/pull/26755 From fgao at openjdk.org Tue Aug 19 08:36:17 2025 From: fgao at openjdk.org (Fei Gao) Date: Tue, 19 Aug 2025 08:36:17 GMT Subject: RFR: 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 Message-ID: This patch fixes a typo introduced in JDK-8353217, which incorrectly disabled SVE vector math symbols. As a result, some vector math test cases such as `jdk/incubator/vector/Double256VectorTests.java` threw exceptions on 256-bit `sve` machines with errors like: `java.lang.InternalError: not supported: ACOS Species[double, 4, S_256_BIT] acosdx_u10sve.` `test/jdk/jdk/incubator/vector` passed on 256-bit `sve` and `neon` machine. ------------- Commit messages: - Split into two separate tasks - Merge branch 'master' into redo-jdk8364184 - 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 Changes: https://git.openjdk.org/jdk/pull/26577/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26577&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8364184 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26577.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26577/head:pull/26577 PR: https://git.openjdk.org/jdk/pull/26577 From aph at openjdk.org Tue Aug 19 08:36:17 2025 From: aph at openjdk.org (Andrew Haley) Date: Tue, 19 Aug 2025 08:36:17 GMT Subject: RFR: 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 In-Reply-To: References: Message-ID: On Thu, 31 Jul 2025 16:14:35 GMT, Fei Gao wrote: > This patch fixes a typo introduced in JDK-8353217, which incorrectly disabled SVE vector math symbols. As a result, some vector math test cases such as `jdk/incubator/vector/Double256VectorTests.java` threw > exceptions on 256-bit `sve` machines with errors like: > `java.lang.InternalError: not supported: ACOS Species[double, 4, S_256_BIT] acosdx_u10sve.` > > `test/jdk/jdk/incubator/vector` passed on 256-bit `sve` and `neon` machine. Can we link this with a GCC bug report? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26577#issuecomment-3143856420 From fgao at openjdk.org Tue Aug 19 08:36:17 2025 From: fgao at openjdk.org (Fei Gao) Date: Tue, 19 Aug 2025 08:36:17 GMT Subject: RFR: 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 In-Reply-To: References: Message-ID: On Fri, 1 Aug 2025 09:19:07 GMT, Andrew Haley wrote: > Can we link this with a GCC bug report? @theRealAph thanks for taking a look at this. It looks like there have already been a few related discussions. The feature author mentioned that there are no current plans to support VLAs. See the discussion in [GCC Bug 103374](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103374), and a newer one in [GCC Bug 119381](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119381). Are you suggesting that we should open a new report? ------------- PR Comment: https://git.openjdk.org/jdk/pull/26577#issuecomment-3150830743 From aph at openjdk.org Tue Aug 19 08:36:17 2025 From: aph at openjdk.org (Andrew Haley) Date: Tue, 19 Aug 2025 08:36:17 GMT Subject: RFR: 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 In-Reply-To: References: Message-ID: On Mon, 4 Aug 2025 13:57:31 GMT, Fei Gao wrote: > > Can we link this with a GCC bug report? > > @theRealAph thanks for taking a look at this. It looks like there have already been a few related discussions. The feature author mentioned that there are no current plans to support VLAs. See the discussion in [GCC Bug 103374](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103374), and a newer one in [GCC Bug 119381](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119381). Are you suggesting that we should open a new report? I'm trying to understand if this is a bug in GCC. It appears that it is: `-ftrivial-auto-var-init=pattern` is incompatible with opaque sizeless types in ARM C Language Extensions (ACLE). There is no workaround for it. So, this patch is reasonable, but please submit a GCC bug report of "`-ftrivial-auto-var-init=pattern` is incompatible with opaque sizeless types in ARM C Language Extensions (ACLE)." Otherwise GCC authors won't know. This might encourage Jakub to fix `-ftrivial-auto-var-init=pattern` . ------------- PR Comment: https://git.openjdk.org/jdk/pull/26577#issuecomment-3151114003 From ihse at openjdk.org Tue Aug 19 08:36:18 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Tue, 19 Aug 2025 08:36:18 GMT Subject: RFR: 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 In-Reply-To: References: Message-ID: On Thu, 31 Jul 2025 16:14:35 GMT, Fei Gao wrote: > This patch fixes a typo introduced in JDK-8353217, which incorrectly disabled SVE vector math symbols. As a result, some vector math test cases such as `jdk/incubator/vector/Double256VectorTests.java` threw > exceptions on 256-bit `sve` machines with errors like: > `java.lang.InternalError: not supported: ACOS Species[double, 4, S_256_BIT] acosdx_u10sve.` > > `test/jdk/jdk/incubator/vector` passed on 256-bit `sve` and `neon` machine. Looks good, thanks for sorting this out! Note that this is dependent on https://github.com/openjdk/jdk/pull/26755. make/autoconf/flags-cflags.m4 line 943: > 941: # libvectormath. Apple Silicon does not support SVE; use macOS as a proxy for > 942: # that check. > 943: if test "x$OPENJDK_TARGET_CPU" = "xaarch64" && test "x$OPENJDK_TARGET_CPU" = "xlinux"; then This is really disturbing! Has really no-one noticed until now that SVE support broke with 8353217? Also, this PR fixes two unrelated errors -- a bug introduced in JDK-8353217, and a compiler error. I think it would be better for everybody's sanity, and future backport efforts, if you split it into two. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26577#issuecomment-3187817040 PR Review Comment: https://git.openjdk.org/jdk/pull/26577#discussion_r2266095631 From fgao at openjdk.org Tue Aug 19 08:36:18 2025 From: fgao at openjdk.org (Fei Gao) Date: Tue, 19 Aug 2025 08:36:18 GMT Subject: RFR: 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 In-Reply-To: References: Message-ID: On Mon, 11 Aug 2025 09:08:39 GMT, Magnus Ihse Bursie wrote: >> This patch fixes a typo introduced in JDK-8353217, which incorrectly disabled SVE vector math symbols. As a result, some vector math test cases such as `jdk/incubator/vector/Double256VectorTests.java` threw >> exceptions on 256-bit `sve` machines with errors like: >> `java.lang.InternalError: not supported: ACOS Species[double, 4, S_256_BIT] acosdx_u10sve.` >> >> `test/jdk/jdk/incubator/vector` passed on 256-bit `sve` and `neon` machine. > > make/autoconf/flags-cflags.m4 line 943: > >> 941: # libvectormath. Apple Silicon does not support SVE; use macOS as a proxy for >> 942: # that check. >> 943: if test "x$OPENJDK_TARGET_CPU" = "xaarch64" && test "x$OPENJDK_TARGET_CPU" = "xlinux"; then > > This is really disturbing! Has really no-one noticed until now that SVE support broke with 8353217? > > Also, this PR fixes two unrelated errors -- a bug introduced in JDK-8353217, and a compiler error. I think it would be better for everybody's sanity, and future backport efforts, if you split it into two. @magicus thanks for reviewing this. That sounds reasonable. I?ve prepared a new version of the code that resolves the `gcc `error without introducing any compatibility issues. My plan is to first fix the `gcc` issue, and then follow up with a separate patch to address the bug introduced in [JDK-8353217](https://bugs.openjdk.org/browse/JDK-8353217). Thanks. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26577#discussion_r2269137672 From lkorinth at openjdk.org Tue Aug 19 09:02:36 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Tue, 19 Aug 2025 09:02:36 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v4] In-Reply-To: References: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> Message-ID: On Tue, 19 Aug 2025 05:47:06 GMT, David Holmes wrote: > By rough count there are 1300 tests that have an explicit timeout set. This change would reduce the actual applied timeout to a quarter of what was previously used, yet you have only had to bump the timeout value for a fraction of the tests - which I find somewhat (pleasantly) surprising. It may be that many of these timeouts stem from a time when we had much much slower machines, so a refresh might not be a bad thing. It will take some time to see the full effects of this change though. Thanks David! And as you said, a few more adjustments will probably be needed when we have run this for a while. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3199869795 From lkorinth at openjdk.org Tue Aug 19 09:19:45 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Tue, 19 Aug 2025 09:19:45 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: <5YehMZKBa60PIk9Ia2sC4kLuFx5ZvfmtoYT_H-LuQbM=.e40c421f-d2af-46e5-8dc7-5b30fe79c0b0@github.com> References: <5YehMZKBa60PIk9Ia2sC4kLuFx5ZvfmtoYT_H-LuQbM=.e40c421f-d2af-46e5-8dc7-5b30fe79c0b0@github.com> Message-ID: On Tue, 19 Aug 2025 06:38:01 GMT, SendaoYan wrote: >> No change should be made to any explicit setting of the timeoutFactor in general as that could cause mass timeouts to occur (old default timeout = 120 * 10 = 1200 but new default = 120 * 2.5 = 300!). >> >> However I see the concern of @sendaoYan because individual tests may now get much larger timeout values when run with the non-default timeoutFactor because they have been adjusted for the new default. I don't see any solution to this dilemma. > > But what this PR do is change the timeoutFactor in general and find out all the tests which may timeout after the timeoutFactor has been changed. > > The old default timeout before this PR is 120 * 4, after this PR the new default is 120 * 1 I do not think 4x longer timeouts for `-Xcomp` is unreasonable. I also do not want to make this huge change even bigger. If you would like to change it after the integration I think that would be valuable --- though my guess is that it could be quite a lot of work. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2284650722 From shade at openjdk.org Tue Aug 19 10:34:51 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 19 Aug 2025 10:34:51 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken In-Reply-To: References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: On Tue, 19 Aug 2025 05:12:13 GMT, Volkan Yazici wrote: >> doc/building.md line 1404: >> >>> 1402: | armel | buster | arm | arm-linux-gnueabi | zero | >>> 1403: | ppc | sid | powerpc | powerpc-linux-gnu | zero | >>> 1404: | ppc64be | sid | ppc64 | powerpc64-linux-gnu | (all) | >> >> This one is not about Fedora, but about Debian-based sysroot. I have not checked recently, but I suspect it would still work, as Debian PPC64 BE port is still alive: https://wiki.debian.org/PPC64 > > @shipilev, thanks so much for the review. ? I was thinking in the same with @magicus while removing this row. Do you still prefer to keep it? This list is also _not_ about Fedora devkit, and the PR is about Fedora devkit, so we are doing unrelated work here, regardless if it makes sense or not :) So yes, I prefer to keep it. > I think all our ppc64 code assumes le by now, so even if we could get a sysroot for ppc64be to work, I doubt it will do much good for the JDK. I believe Zero is still fine with BE. Anyhow, we are doing these cross-compilation instructions largely to support the poor souls who are tasked with maintaining the unusual ports. So if Debian PPC64 BE port is alive, which I think it is, that would mean they build OpenJDK, that would mean they build _some_ PPC64BE config, whether Zero (more likely) or Server (unlikely, as it is probably broken). ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26821#discussion_r2284832460 From fgao at openjdk.org Tue Aug 19 12:34:37 2025 From: fgao at openjdk.org (Fei Gao) Date: Tue, 19 Aug 2025 12:34:37 GMT Subject: RFR: 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 In-Reply-To: References: Message-ID: On Thu, 31 Jul 2025 16:14:35 GMT, Fei Gao wrote: > This patch fixes a typo introduced in JDK-8353217, which incorrectly disabled SVE vector math symbols. As a result, some vector math test cases such as `jdk/incubator/vector/Double256VectorTests.java` threw > exceptions on 256-bit `sve` machines with errors like: > `java.lang.InternalError: not supported: ACOS Species[double, 4, S_256_BIT] acosdx_u10sve.` > > `test/jdk/jdk/incubator/vector` passed on 256-bit `sve` and `neon` machine. The issue reported in [JDK-8364185](https://bugs.openjdk.org/browse/JDK-8364185) has been addressed separately in https://github.com/openjdk/jdk/pull/26755, which has now been integrated. Tier1, tier2 and tier3 testing of this PR and https://github.com/openjdk/jdk/pull/26755 completed successfully, see https://github.com/openjdk/jdk/pull/26755#issuecomment-3194869535. I believe this pull request is ready for review. Thanks! ------------- PR Comment: https://git.openjdk.org/jdk/pull/26577#issuecomment-3200571629 From vyazici at openjdk.org Tue Aug 19 14:48:34 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Tue, 19 Aug 2025 14:48:34 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken [v2] In-Reply-To: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: > In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. Volkan Yazici has updated the pull request incrementally with two additional commits since the last revision: - Run `update-build-docs` - Revert `ppc64be` removal ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26821/files - new: https://git.openjdk.org/jdk/pull/26821/files/91acc87a..c320f258 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26821&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26821&range=00-01 Stats: 11 lines in 2 files changed: 8 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/26821.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26821/head:pull/26821 PR: https://git.openjdk.org/jdk/pull/26821 From vyazici at openjdk.org Tue Aug 19 14:48:35 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Tue, 19 Aug 2025 14:48:35 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken [v2] In-Reply-To: References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: On Tue, 19 Aug 2025 10:31:47 GMT, Aleksey Shipilev wrote: >> @shipilev, thanks so much for the review. ? I was thinking in the same with @magicus while removing this row. Do you still prefer to keep it? > > This list is also _not_ about Fedora devkit, and the PR is about Fedora devkit, so we are doing unrelated work here, regardless if it makes sense or not :) So yes, I prefer to keep it. > >> I think all our ppc64 code assumes le by now, so even if we could get a sysroot for ppc64be to work, I doubt it will do much good for the JDK. > > I believe Zero is still fine with BE. > > Anyhow, we are doing these cross-compilation instructions largely to support the poor souls who are tasked with maintaining the unusual ports. So if Debian PPC64 BE port is alive, which I think it is, that would mean they build OpenJDK, that would mean they build _some_ PPC64BE config, whether Zero (more likely) or Server (unlikely, as it is probably broken). Introduced it back in 69344b10. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26821#discussion_r2285499552 From stuefe at openjdk.org Tue Aug 19 14:55:47 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Tue, 19 Aug 2025 14:55:47 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken [v2] In-Reply-To: References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: On Tue, 19 Aug 2025 14:41:55 GMT, Volkan Yazici wrote: >> This list is also _not_ about Fedora devkit, and the PR is about Fedora devkit, so we are doing unrelated work here, regardless if it makes sense or not :) So yes, I prefer to keep it. >> >>> I think all our ppc64 code assumes le by now, so even if we could get a sysroot for ppc64be to work, I doubt it will do much good for the JDK. >> >> I believe Zero is still fine with BE. >> >> Anyhow, we are doing these cross-compilation instructions largely to support the poor souls who are tasked with maintaining the unusual ports. So if Debian PPC64 BE port is alive, which I think it is, that would mean they build OpenJDK, that would mean they build _some_ PPC64BE config, whether Zero (more likely) or Server (unlikely, as it is probably broken). > > Introduced it back in 69344b10. > I think all our ppc64 code assumes le by now, so even if we could get a sysroot for ppc64be to work, I doubt it will do much good for the JDK. FYI, and completely irrelevant for this PR, but AIX is still ppcbe. The only big endian platform left. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26821#discussion_r2285532131 From shade at openjdk.org Tue Aug 19 14:58:42 2025 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 19 Aug 2025 14:58:42 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken [v2] In-Reply-To: References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: On Tue, 19 Aug 2025 14:48:34 GMT, Volkan Yazici wrote: >> In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. > > Volkan Yazici has updated the pull request incrementally with two additional commits since the last revision: > > - Run `update-build-docs` > - Revert `ppc64be` removal Looks fine, thanks! ------------- Marked as reviewed by shade (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26821#pullrequestreview-3132724481 From duke at openjdk.org Wed Aug 20 00:44:47 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Wed, 20 Aug 2025 00:44:47 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency In-Reply-To: References: Message-ID: On Fri, 8 Aug 2025 10:27:30 GMT, Francesco Andreuzzi wrote: > > For example, when the threshold is set to 50 I get this compilation error: > > How can we possibly get a compilation error when everything should build with PCH disabled? @dholmes-ora FYI I tracked the failure and opened a ticket: https://bugs.openjdk.org/browse/JDK-8365829 ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3203544026 From ihse at openjdk.org Wed Aug 20 06:44:43 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Wed, 20 Aug 2025 06:44:43 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken [v2] In-Reply-To: References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: On Tue, 19 Aug 2025 14:48:34 GMT, Volkan Yazici wrote: >> In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. > > Volkan Yazici has updated the pull request incrementally with two additional commits since the last revision: > > - Run `update-build-docs` > - Revert `ppc64be` removal make/devkit/Tools.gmk line 76: > 74: endif > 75: ifeq ($(ARCH), riscv64) > 76: ifeq ($(filter 36 37, $(BASE_OS_VERSION)), ) The test and the error message does not match up. make/devkit/Tools.gmk line 88: > 86: endif > 87: ifeq ($(ARCH), armhfp) > 88: ifneq ($(BASE_OS_VERSION),36) Suggestion: ifneq ($(BASE_OS_VERSION), 36) ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26821#discussion_r2287140943 PR Review Comment: https://git.openjdk.org/jdk/pull/26821#discussion_r2287144658 From ihse at openjdk.org Wed Aug 20 06:47:40 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Wed, 20 Aug 2025 06:47:40 GMT Subject: RFR: 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 In-Reply-To: References: Message-ID: On Thu, 31 Jul 2025 16:14:35 GMT, Fei Gao wrote: > This patch fixes a typo introduced in JDK-8353217, which incorrectly disabled SVE vector math symbols. As a result, some vector math test cases such as `jdk/incubator/vector/Double256VectorTests.java` threw > exceptions on 256-bit `sve` machines with errors like: > `java.lang.InternalError: not supported: ACOS Species[double, 4, S_256_BIT] acosdx_u10sve.` > > `test/jdk/jdk/incubator/vector` passed on 256-bit `sve` and `neon` machine. LGTM ------------- Marked as reviewed by ihse (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26577#pullrequestreview-3135008209 From aboldtch at openjdk.org Wed Aug 20 07:12:56 2025 From: aboldtch at openjdk.org (Axel Boldt-Christmas) Date: Wed, 20 Aug 2025 07:12:56 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v11] In-Reply-To: <-Sya8z4PLvQEJQO1dWl5a31ZEFBg5eBrzUjSv5PVGNo=.0e9484ba-8a5e-475a-abd6-05b6e441bd4c@github.com> References: <-Sya8z4PLvQEJQO1dWl5a31ZEFBg5eBrzUjSv5PVGNo=.0e9484ba-8a5e-475a-abd6-05b6e441bd4c@github.com> Message-ID: On Tue, 12 Aug 2025 11:32:42 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - conditional includes > - variants I have a few questions/comments. There are now a bunch of unconditional includes for JVM features which can be disabled. With the exception of CDS, in the rest of the codebase we have been very careful to always guard these includes when using them outside their own sub-components. I understand that these are generated includes, but I think we can curate the list some manually. Currently `c1/c1_globals.hpp` `jvmci/jvmci_globals.hpp` and `opto/c2_globals.hpp` are included which are optional features, `compiler/compiler_globals.hpp` (which is also included) should be used instead. Same goes for `gc/serial/serial_globals.hpp` and `gc/shared/gc_globals.hpp`. In addition to those globals files we have all the JFR and CDS includes which are unguarded. I am not sure I understand completely what goes into the list of conditional includes here. I understand that there might be duplicates across the different conditional includes, but now there are also includes which are duplicated in the unconditional includes. So is it a list of all includes which are beneficial when building with just that feature, or is it suppose to be a list of extra includes which are beneficial if that feature is enabled. Or are those lists something else? ------------- PR Review: https://git.openjdk.org/jdk/pull/26681#pullrequestreview-3135090453 From vyazici at openjdk.org Wed Aug 20 07:29:43 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Wed, 20 Aug 2025 07:29:43 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken [v3] In-Reply-To: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: > In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. Volkan Yazici has updated the pull request incrementally with one additional commit since the last revision: Fix whitespace Co-authored-by: Magnus Ihse Bursie ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26821/files - new: https://git.openjdk.org/jdk/pull/26821/files/c320f258..2b30b3b8 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26821&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26821&range=01-02 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26821.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26821/head:pull/26821 PR: https://git.openjdk.org/jdk/pull/26821 From vyazici at openjdk.org Wed Aug 20 07:38:26 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Wed, 20 Aug 2025 07:38:26 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken [v4] In-Reply-To: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: <1EkvhqJiv_SxJ26Hc6rsHcN3dCHfHcQXEKvR97x4jtk=.ee29465c-67e1-4c10-86be-325bb86b75a2@github.com> > In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. Volkan Yazici has updated the pull request incrementally with one additional commit since the last revision: Fix Fedora riscv64 version filter ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26821/files - new: https://git.openjdk.org/jdk/pull/26821/files/2b30b3b8..bdee4cae Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26821&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26821&range=02-03 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26821.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26821/head:pull/26821 PR: https://git.openjdk.org/jdk/pull/26821 From vyazici at openjdk.org Wed Aug 20 07:38:26 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Wed, 20 Aug 2025 07:38:26 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken [v2] In-Reply-To: References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: On Wed, 20 Aug 2025 06:40:24 GMT, Magnus Ihse Bursie wrote: >> Volkan Yazici has updated the pull request incrementally with two additional commits since the last revision: >> >> - Run `update-build-docs` >> - Revert `ppc64be` removal > > make/devkit/Tools.gmk line 76: > >> 74: endif >> 75: ifeq ($(ARCH), riscv64) >> 76: ifeq ($(filter 36 37, $(BASE_OS_VERSION)), ) > > The test and the error message does not match up. Very sharp of you, thanks! ? I should have used `ifneq`. I've replaced the current mind-bending expression with a simpler one in bdee4cae67c. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26821#discussion_r2287265983 From aph at openjdk.org Wed Aug 20 08:49:42 2025 From: aph at openjdk.org (Andrew Haley) Date: Wed, 20 Aug 2025 08:49:42 GMT Subject: RFR: 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 In-Reply-To: References: Message-ID: <6fkfPwsRF478Ea8Ld8NJe9Rf9JEboWJwhrMK8kI4plQ=.f632ae6a-4660-4132-918b-c12ba3b75191@github.com> On Thu, 31 Jul 2025 16:14:35 GMT, Fei Gao wrote: > This patch fixes a typo introduced in JDK-8353217, which incorrectly disabled SVE vector math symbols. As a result, some vector math test cases such as `jdk/incubator/vector/Double256VectorTests.java` threw > exceptions on 256-bit `sve` machines with errors like: > `java.lang.InternalError: not supported: ACOS Species[double, 4, S_256_BIT] acosdx_u10sve.` > > `test/jdk/jdk/incubator/vector` passed on 256-bit `sve` and `neon` machine. Marked as reviewed by aph (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26577#pullrequestreview-3135453459 From fgao at openjdk.org Wed Aug 20 11:35:45 2025 From: fgao at openjdk.org (Fei Gao) Date: Wed, 20 Aug 2025 11:35:45 GMT Subject: RFR: 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 In-Reply-To: References: Message-ID: On Mon, 4 Aug 2025 14:52:14 GMT, Andrew Haley wrote: >>> Can we link this with a GCC bug report? >> >> @theRealAph thanks for taking a look at this. It looks like there have already been a few related discussions. The feature author mentioned that there are no current plans to support VLAs. See the discussion in [GCC Bug 103374](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103374), and a newer one in [GCC Bug 119381](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119381). Are you suggesting that we should open a new report? > >> > Can we link this with a GCC bug report? >> >> @theRealAph thanks for taking a look at this. It looks like there have already been a few related discussions. The feature author mentioned that there are no current plans to support VLAs. See the discussion in [GCC Bug 103374](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103374), and a newer one in [GCC Bug 119381](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119381). Are you suggesting that we should open a new report? > > I'm trying to understand if this is a bug in GCC. It appears that it is: `-ftrivial-auto-var-init=pattern` is incompatible with opaque sizeless types in ARM C Language Extensions (ACLE). There is no workaround for it. > > So, this patch is reasonable, but please submit a GCC bug report of "`-ftrivial-auto-var-init=pattern` is incompatible with opaque sizeless types in ARM C Language Extensions (ACLE)." Otherwise GCC authors won't know. This might encourage Jakub to fix `-ftrivial-auto-var-init=pattern` . Thanks for approving it @theRealAph @magicus . I'll integrate it. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26577#issuecomment-3205824114 From fgao at openjdk.org Wed Aug 20 11:38:46 2025 From: fgao at openjdk.org (Fei Gao) Date: Wed, 20 Aug 2025 11:38:46 GMT Subject: Integrated: 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 In-Reply-To: References: Message-ID: On Thu, 31 Jul 2025 16:14:35 GMT, Fei Gao wrote: > This patch fixes a typo introduced in JDK-8353217, which incorrectly disabled SVE vector math symbols. As a result, some vector math test cases such as `jdk/incubator/vector/Double256VectorTests.java` threw > exceptions on 256-bit `sve` machines with errors like: > `java.lang.InternalError: not supported: ACOS Species[double, 4, S_256_BIT] acosdx_u10sve.` > > `test/jdk/jdk/incubator/vector` passed on 256-bit `sve` and `neon` machine. This pull request has now been integrated. Changeset: 51d710e3 Author: Fei Gao URL: https://git.openjdk.org/jdk/commit/51d710e3cc8ee185a0a305e8efcfd03dda41570b Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod 8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 Reviewed-by: ihse, aph ------------- PR: https://git.openjdk.org/jdk/pull/26577 From dholmes at openjdk.org Wed Aug 20 12:55:43 2025 From: dholmes at openjdk.org (David Holmes) Date: Wed, 20 Aug 2025 12:55:43 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: <5YehMZKBa60PIk9Ia2sC4kLuFx5ZvfmtoYT_H-LuQbM=.e40c421f-d2af-46e5-8dc7-5b30fe79c0b0@github.com> References: <5YehMZKBa60PIk9Ia2sC4kLuFx5ZvfmtoYT_H-LuQbM=.e40c421f-d2af-46e5-8dc7-5b30fe79c0b0@github.com> Message-ID: On Tue, 19 Aug 2025 06:38:01 GMT, SendaoYan wrote: >> No change should be made to any explicit setting of the timeoutFactor in general as that could cause mass timeouts to occur (old default timeout = 120 * 10 = 1200 but new default = 120 * 2.5 = 300!). >> >> However I see the concern of @sendaoYan because individual tests may now get much larger timeout values when run with the non-default timeoutFactor because they have been adjusted for the new default. I don't see any solution to this dilemma. > > But what this PR do is change the timeoutFactor in general and find out all the tests which may timeout after the timeoutFactor has been changed. > > The old default timeout before this PR is 120 * 4, after this PR the new default is 120 * 1 @sendaoYan this PR changes the default timeoutFactor and so also has to change quite a number of implicit and explicit timeouts. But that doesn't mean that test configs that already set their own timeoutFactor should adjust by the same factor! That just doesn't work for any test with an implicit default timeout. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2288072431 From ihse at openjdk.org Wed Aug 20 13:07:42 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Wed, 20 Aug 2025 13:07:42 GMT Subject: RFR: 8362243: Devkit creation for Fedora base OS is broken [v4] In-Reply-To: <1EkvhqJiv_SxJ26Hc6rsHcN3dCHfHcQXEKvR97x4jtk=.ee29465c-67e1-4c10-86be-325bb86b75a2@github.com> References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> <1EkvhqJiv_SxJ26Hc6rsHcN3dCHfHcQXEKvR97x4jtk=.ee29465c-67e1-4c10-86be-325bb86b75a2@github.com> Message-ID: On Wed, 20 Aug 2025 07:38:26 GMT, Volkan Yazici wrote: >> In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. > > Volkan Yazici has updated the pull request incrementally with one additional commit since the last revision: > > Fix Fedora riscv64 version filter LGTM now. ------------- Marked as reviewed by ihse (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26821#pullrequestreview-3136509440 From ihse at openjdk.org Wed Aug 20 13:12:47 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Wed, 20 Aug 2025 13:12:47 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v11] In-Reply-To: References: <-Sya8z4PLvQEJQO1dWl5a31ZEFBg5eBrzUjSv5PVGNo=.0e9484ba-8a5e-475a-abd6-05b6e441bd4c@github.com> Message-ID: On Wed, 20 Aug 2025 07:10:16 GMT, Axel Boldt-Christmas wrote: > There are now a bunch of unconditional includes for JVM features which can be disabled. Hm. Either there is a bug in @fandreuz script, or these files are still included even if you disable all features. The list of unconditional includes is supposed to be generated by building a JVM with no features at all enabled (with the possible exception of epsilon-gc; I believe having at least one GC is a requirement), and then checking which files are indeed included. My guess is that the logic is not so much as "don't include file c1_foo unless C1 is enabled", as "in c1_foo, guard all contents with an ifdef on C1". So then this is what you'd see in that case. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3206277753 From vyazici at openjdk.org Wed Aug 20 13:16:53 2025 From: vyazici at openjdk.org (Volkan Yazici) Date: Wed, 20 Aug 2025 13:16:53 GMT Subject: Integrated: 8362243: Devkit creation for Fedora base OS is broken In-Reply-To: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> References: <0GZersfZNeD4EhZfmYqNniW9lHGz7I3WvmwBdhNC9YE=.63e9864e-7a45-4bce-995e-90e050463cbb@github.com> Message-ID: On Mon, 18 Aug 2025 12:29:50 GMT, Volkan Yazici wrote: > In Devkit, removes `ppc64`/`ppc64be`, which is superseded by `ppc64le`, fixes Fedora repository links, and bumps the `LATEST_ARCHIVED_OS_VERSION` to 36. This pull request has now been integrated. Changeset: 1383b8ef Author: Volkan Yazici URL: https://git.openjdk.org/jdk/commit/1383b8ef87bcf3b2b498c883c81434bab8fe68fd Stats: 27 lines in 4 files changed: 12 ins; 1 del; 14 mod 8362243: Devkit creation for Fedora base OS is broken Reviewed-by: ihse, erikj, shade ------------- PR: https://git.openjdk.org/jdk/pull/26821 From syan at openjdk.org Wed Aug 20 14:28:43 2025 From: syan at openjdk.org (SendaoYan) Date: Wed, 20 Aug 2025 14:28:43 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: <5YehMZKBa60PIk9Ia2sC4kLuFx5ZvfmtoYT_H-LuQbM=.e40c421f-d2af-46e5-8dc7-5b30fe79c0b0@github.com> Message-ID: On Wed, 20 Aug 2025 12:53:23 GMT, David Holmes wrote: >> But what this PR do is change the timeoutFactor in general and find out all the tests which may timeout after the timeoutFactor has been changed. >> >> The old default timeout before this PR is 120 * 4, after this PR the new default is 120 * 1 > > @sendaoYan this PR changes the default timeoutFactor and so also has to change quite a number of implicit and explicit timeouts. But that doesn't mean that test configs that already set their own timeoutFactor should adjust by the same factor! That just doesn't work for any test with an implicit default timeout. Yes, this PR change the default timeoutFactor when the tested JVM options do not contains '-Xcomp', and at the same time also multiplies 4 of the timeout value defined in some tests. So after this PR, the tests which the timeout value has been multiplied 4 will have more timeout value, when the tested [JVM options contains '-Xcomp'](https://github.com/lkorinth/jdk/blob/286a2cc6e989a1c7dcd641bce792c6411bc1d0ea/make/RunTests.gmk#L593). I do agree this change, what I mean is this change has some side effect. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2288361080 From ihse at openjdk.org Wed Aug 20 15:19:42 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Wed, 20 Aug 2025 15:19:42 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v4] In-Reply-To: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> References: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> Message-ID: On Mon, 18 Aug 2025 16:34:21 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > after suggestion from Daniel doc/testing.md line 385: > 383: (`-timeoutFactor`). Also, some test cases that programmatically wait a > 384: certain amount of time will apply this factor. If we run in > 385: forced compilation mode (`-Xcomp`), [RunTest.gmk](../make/RunTests.gmk) I don't think there is any point linking to the build source code. Suggestion: certain amount of time will apply this factor. If you run in forced compilation mode (`-Xcomp`) using `make test`, it will automatically adjust this factor to compensate for the interpreter not being as fast as JITed code. Defaults to 1. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2288510800 From ihse at openjdk.org Wed Aug 20 15:24:39 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Wed, 20 Aug 2025 15:24:39 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v4] In-Reply-To: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> References: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> Message-ID: <8U5zCHQCXe9z3nrLlCwRVgbXCFzWHxqsvI74M1yQ96Y=.4ee013da-22a4-43e3-8660-8bf3c2261450@github.com> On Mon, 18 Aug 2025 16:34:21 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > after suggestion from Daniel It seems to me like there is a need to automatically collect normal test run times automatically, so we can match the timeout given to any individual test with the normal execution time. After all, the purpose of any timeout on tests is to allow the test to execute normally, but not wait too long in case of a problem that causes the test to take too long (or forever) to run. I realize that this is highly hardware dependent, but test times tend to be Pareto distributed, so a very quick test maybe takes 1 second on fast machines and 10 on slow, and very slow tests maybe take 15 minutes on fast machines and 40 minutes on slow. In the first case, anything above 15 seconds is probably sus, and in the second case, anything above 60 is probably not good either (I'm just adding 50% to the max time). Right now it seems engineers is spending their valuable time giving guesstimates for each individual test. That seems like poorly used time and resources. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3206865824 From ihse at openjdk.org Wed Aug 20 15:31:44 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Wed, 20 Aug 2025 15:31:44 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v3] In-Reply-To: References: Message-ID: On Mon, 18 Aug 2025 16:24:30 GMT, Saint Wesonga wrote: >> I wonder why we still have the assembler for 32 bit, as the JDK no longer supports 32 bit Windows ever since Magnus nuked it from the codebase > >> I wonder why we still have the assembler for 32 bit, as the JDK no longer supports 32 bit Windows ever since Magnus nuked it from the codebase > > I have filed https://bugs.openjdk.org/browse/JDK-8365707 to address that issue Is this really so? The [documentation](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) states: /Ta filename Assembles source file whose name doesn't end with the .asm extension. We want the compiler to actually do what we tell it to do, even if the files are named .S. Maybe this behavior has been changed in later versions, but I am a bit wary about removing it unless we have some official confirmation that `/Ta` is a no-op, and/or information on which version this started to happen. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26791#discussion_r2288537315 From lkorinth at openjdk.org Wed Aug 20 16:27:39 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Wed, 20 Aug 2025 16:27:39 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v4] In-Reply-To: References: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> Message-ID: On Wed, 20 Aug 2025 15:17:02 GMT, Magnus Ihse Bursie wrote: >> Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: >> >> after suggestion from Daniel > > doc/testing.md line 385: > >> 383: (`-timeoutFactor`). Also, some test cases that programmatically wait a >> 384: certain amount of time will apply this factor. If we run in >> 385: forced compilation mode (`-Xcomp`), [RunTest.gmk](../make/RunTests.gmk) > > I don't think there is any point linking to the build source code. > > Suggestion: > > certain amount of time will apply this factor. If you run in > forced compilation mode (`-Xcomp`) using `make test`, it > will automatically adjust this factor to compensate for the > interpreter not being as fast as JITed code. Defaults to 1. I will remove the link, and I will update my bad text still talking about the interpreter (sorry for that mistake). ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2288683592 From lkorinth at openjdk.org Wed Aug 20 17:05:59 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Wed, 20 Aug 2025 17:05:59 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v4] In-Reply-To: References: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> Message-ID: <2Ba-EiFMVh1-nMHcihw93nZq-TkQNtvHc244Bwe8I40=.cfa54a17-0a3f-465d-a1c3-7560965376d7@github.com> On Wed, 20 Aug 2025 16:24:43 GMT, Leo Korinth wrote: >> doc/testing.md line 385: >> >>> 383: (`-timeoutFactor`). Also, some test cases that programmatically wait a >>> 384: certain amount of time will apply this factor. If we run in >>> 385: forced compilation mode (`-Xcomp`), [RunTest.gmk](../make/RunTests.gmk) >> >> I don't think there is any point linking to the build source code. >> >> Suggestion: >> >> certain amount of time will apply this factor. If you run in >> forced compilation mode (`-Xcomp`) using `make test`, it >> will automatically adjust this factor to compensate for the >> interpreter not being as fast as JITed code. Defaults to 1. > > I will remove the link, and I will update my bad text still talking about the interpreter (sorry for that mistake). fixed ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2288793081 From lkorinth at openjdk.org Wed Aug 20 17:05:59 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Wed, 20 Aug 2025 17:05:59 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v5] In-Reply-To: References: Message-ID: > This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) > > In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). > > My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. > > These fixes have been created when I have ploughed through test cases: > JDK-8352719: Add an equals sign to the modules statement > JDK-8352709: Remove bad timing annotations from WhileOpTest.java > JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test > CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE > CODETOOLS-7903961: Make default timeout configurable > > After the review, I will update the copyrights. > > I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. > > I got 4 timing related faults: > 1) runtime/Thread/TestThreadDumpMonitorContention.java > This is probably: https://bugs.openjdk.org/browse/JDK-8361370 > 2) sun/tools/jhsdb/BasicLauncherTest.java > I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. > 3) gc/stress/TestReclaimStringsLeaksMemory.java > I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. > 4) sun/security/ssl/X509KeyManager/CertChecking.java > This is a new test that I got on last rebase. I have added a timeout of 480 to it. > > In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. > > From the review of the cancelled "8356171: Increase timeout for test cases as preparation for change of... Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: update testing.md, remove makefile link, fix bad text ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26749/files - new: https://git.openjdk.org/jdk/pull/26749/files/286a2cc6..f24a1e72 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26749&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26749&range=03-04 Stats: 8 lines in 2 files changed: 0 ins; 2 del; 6 mod Patch: https://git.openjdk.org/jdk/pull/26749.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26749/head:pull/26749 PR: https://git.openjdk.org/jdk/pull/26749 From ihse at openjdk.org Wed Aug 20 19:36:44 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Wed, 20 Aug 2025 19:36:44 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v5] In-Reply-To: References: Message-ID: On Wed, 20 Aug 2025 17:05:59 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > update testing.md, remove makefile link, fix bad text Build changes look good now. Thanks! ------------- Marked as reviewed by ihse (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/26749#pullrequestreview-3137980952 From egahlin at openjdk.org Wed Aug 20 20:52:04 2025 From: egahlin at openjdk.org (Erik Gahlin) Date: Wed, 20 Aug 2025 20:52:04 GMT Subject: RFR: 8365815: JFR: Update metadata.xml with 'jfr query' examples Message-ID: Could I have a review of a PR that adds a couple of 'jfr query' examples to metadata.xml? It turns out that the EventDuration event doesn't work because it has no fields. The fix is to remove the class-specific commit() method and constructor for events without fields. Testing: test/jdk/jdk/jfr + tier1 Thanks Erik ------------- Commit messages: - Initial Changes: https://git.openjdk.org/jdk/pull/26869/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26869&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8365815 Stats: 15 lines in 2 files changed: 13 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/26869.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26869/head:pull/26869 PR: https://git.openjdk.org/jdk/pull/26869 From dholmes at openjdk.org Wed Aug 20 21:32:39 2025 From: dholmes at openjdk.org (David Holmes) Date: Wed, 20 Aug 2025 21:32:39 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v4] In-Reply-To: <8U5zCHQCXe9z3nrLlCwRVgbXCFzWHxqsvI74M1yQ96Y=.4ee013da-22a4-43e3-8660-8bf3c2261450@github.com> References: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> <8U5zCHQCXe9z3nrLlCwRVgbXCFzWHxqsvI74M1yQ96Y=.4ee013da-22a4-43e3-8660-8bf3c2261450@github.com> Message-ID: On Wed, 20 Aug 2025 15:21:39 GMT, Magnus Ihse Bursie wrote: > I realize that this is highly hardware dependent, but test times tend to be Pareto distributed, so a very quick test maybe takes 1 second on fast machines and 10 on slow, @magicus unfortunately that is often not the case in practice. We can see many tests that normally run very quickly but occasionally run very slow - minutes versus seconds. > Right now it seems engineers is spending their valuable time giving guesstimates for each individual test. That seems like poorly used time and resources. For this exercise existing explicit timeout values need to be multiplied by 4 to keep the same absolute timeout value. In addition a number of tests that use the implicit default timeout (120*4) now need an explicit timeout (480 generally). ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3208143195 From egahlin at openjdk.org Thu Aug 21 05:21:23 2025 From: egahlin at openjdk.org (Erik Gahlin) Date: Thu, 21 Aug 2025 05:21:23 GMT Subject: RFR: 8365815: JFR: Update metadata.xml with 'jfr query' examples [v2] In-Reply-To: References: Message-ID: > Could I have a review of a PR that adds a couple of 'jfr query' examples to metadata.xml? > > It turns out that the EventDuration event doesn't work because it has no fields. The fix is to remove the class-specific commit() method and constructor for events without fields. > > Testing: test/jdk/jdk/jfr + tier1 > > Thanks > Erik Erik Gahlin has updated the pull request incrementally with one additional commit since the last revision: Add view output ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26869/files - new: https://git.openjdk.org/jdk/pull/26869/files/604b86de..9d54c0e5 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26869&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26869&range=00-01 Stats: 17 lines in 1 file changed: 13 ins; 1 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/26869.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26869/head:pull/26869 PR: https://git.openjdk.org/jdk/pull/26869 From lkorinth at openjdk.org Thu Aug 21 09:12:57 2025 From: lkorinth at openjdk.org (Leo Korinth) Date: Thu, 21 Aug 2025 09:12:57 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: <5YehMZKBa60PIk9Ia2sC4kLuFx5ZvfmtoYT_H-LuQbM=.e40c421f-d2af-46e5-8dc7-5b30fe79c0b0@github.com> Message-ID: On Wed, 20 Aug 2025 14:25:57 GMT, SendaoYan wrote: >> @sendaoYan this PR changes the default timeoutFactor and so also has to change quite a number of implicit and explicit timeouts. But that doesn't mean that test configs that already set their own timeoutFactor should adjust by the same factor! That just doesn't work for any test with an implicit default timeout. > > Yes, this PR change the default timeoutFactor when the tested JVM options do not contains '-Xcomp', and at the same time also multiplies 4 of the timeout value defined in some tests. > > So after this PR, the tests which the timeout value has been multiplied 4 will have more timeout value, when the tested [JVM options contains '-Xcomp'](https://github.com/lkorinth/jdk/blob/286a2cc6e989a1c7dcd641bce792c6411bc1d0ea/make/RunTests.gmk#L593). > > I do agree this change, what I mean is this change has some side effect. > >> If you would like to change it after the integration I think that would be valuable --- though my guess is that it could be quite a lot of work. > > I think I can try it in a new PR. I want to _warn_ you before you put too much energy into it. Changing the `-Xcomp` timeout factor might have even bigger impact than my change. Also, I have no idea how well that flag is tested in open testing. That is, your change might look good for you --- but might cause havoc for companies doing more extensive testing. I have still not received green light for integrating my change, because extensive testing is still being run (and other teams are evaluating). I advise against changing the flag. When I evaluate the benefit for the default timeout, it was mainly not the timeout _in itself_ that was the problem, but the fact that most people have no idea that the timeout factor is applied and thus can not create or debug tests in a good way. I hope this helps you, and does not come out as too negative. I just feel that I have put too much energy into this, and I do not hope that struggle for you. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2290422272 From syan at openjdk.org Thu Aug 21 09:52:54 2025 From: syan at openjdk.org (SendaoYan) Date: Thu, 21 Aug 2025 09:52:54 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v3] In-Reply-To: References: <5YehMZKBa60PIk9Ia2sC4kLuFx5ZvfmtoYT_H-LuQbM=.e40c421f-d2af-46e5-8dc7-5b30fe79c0b0@github.com> Message-ID: On Thu, 21 Aug 2025 09:10:26 GMT, Leo Korinth wrote: >> Yes, this PR change the default timeoutFactor when the tested JVM options do not contains '-Xcomp', and at the same time also multiplies 4 of the timeout value defined in some tests. >> >> So after this PR, the tests which the timeout value has been multiplied 4 will have more timeout value, when the tested [JVM options contains '-Xcomp'](https://github.com/lkorinth/jdk/blob/286a2cc6e989a1c7dcd641bce792c6411bc1d0ea/make/RunTests.gmk#L593). >> >> I do agree this change, what I mean is this change has some side effect. >> >>> If you would like to change it after the integration I think that would be valuable --- though my guess is that it could be quite a lot of work. >> >> I think I can try it in a new PR. > > I want to _warn_ you before you put too much energy into it. Changing the `-Xcomp` timeout factor might have even bigger impact than my change. Also, I have no idea how well that flag is tested in open testing. That is, your change might look good for you --- but might cause havoc for companies doing more extensive testing. > > I have still not received green light for integrating my change, because extensive testing is still being run (and other teams are evaluating). I advise against changing the flag. When I evaluate the benefit for the default timeout, it was mainly not the timeout _in itself_ that was the problem, but the fact that most people have no idea that the timeout factor is applied and thus can not create or debug tests in a good way. I hope this helps you, and does not come out as too negative. I just feel that I have put too much energy into this, and I do not hope that struggle for you. @lkorinth Thanks for your advice sincerely. I think you are right, we need more evaluate cautiously before start to change the timeoutFactor for -Xcomp. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2290523415 From duke at openjdk.org Thu Aug 21 10:13:57 2025 From: duke at openjdk.org (Francesco Andreuzzi) Date: Thu, 21 Aug 2025 10:13:57 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v11] In-Reply-To: <-Sya8z4PLvQEJQO1dWl5a31ZEFBg5eBrzUjSv5PVGNo=.0e9484ba-8a5e-475a-abd6-05b6e441bd4c@github.com> References: <-Sya8z4PLvQEJQO1dWl5a31ZEFBg5eBrzUjSv5PVGNo=.0e9484ba-8a5e-475a-abd6-05b6e441bd4c@github.com> Message-ID: On Tue, 12 Aug 2025 11:32:42 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - conditional includes > - variants I think I found a more sensible approach to tackle this problem. Using clang [`-ftime-trace`](https://clang.llvm.org/docs/analyzer/developer-docs/PerformanceInvestigation.html#performance-analysis-using-ftime-trace) we can get reports in [Trace Event format](https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview?tab=t.0) about each header. Example of one such file here: [shenandoahOldGC.json](https://github.com/user-attachments/files/21915502/shenandoahOldGC.json). These files can be processed (e.g. with [ClangBuildAnalyzer](https://github.com/aras-p/ClangBuildAnalyzer/tree/main)) to dig where time was spent during the build. Among the information we can get from `ClangBuildAnalyzer`, here is the interesting one: **** Expensive headers: 597169 ms: /jdk/src/hotspot/share/oops/access.inline.hpp (included 650 times, avg 918 ms), included via: 80x: oop.inline.hpp iterator.inline.hpp 70x: javaClasses.inline.hpp 40x: jfrEvents.hpp jfrEventClasses.hpp jfrEvent.hpp jfrNativeEventWriter.hpp jfrEventWriterHost.inline.hpp jfrEventWriterHost.hpp jfrWriterHost.inline.hpp jfrTraceId.inline.hpp javaThread.inline.hpp oopHandle.inline.hpp 39x: shenandoahHeap.inline.hpp javaClasses.inline.hpp 32x: g1CollectedHeap.inline.hpp g1ConcurrentMark.inline.hpp g1ConcurrentMarkBitMap.inline.hpp markBitMap.inline.hpp oop.inline.hpp iterator.inline.hpp 30x: ciUtilities.inline.hpp interfaceSupport.inline.hpp javaThread.inline.hpp oopHandle.inline.hpp ... 425714 ms: /jdk/src/hotspot/share/memory/iterator.inline.hpp (included 646 times, avg 659 ms), included via: 80x: oop.inline.hpp 70x: javaClasses.inline.hpp access.inline.hpp barrierSet.inline.hpp objArrayOop.inline.hpp oop.inline.hpp 40x: jfrEvents.hpp jfrEventClasses.hpp jfrEvent.hpp jfrNativeEventWriter.hpp jfrEventWriterHost.inline.hpp jfrEventWriterHost.hpp jfrWriterHost.inline.hpp jfrTraceId.inline.hpp javaThread.inline.hpp oopHandle.inline.hpp access.inline.hpp barrierSet.inline.hpp objArrayOop.inline.hpp oop.inline.hpp 39x: shenandoahHeap.inline.hpp javaClasses.inline.hpp access.inline.hpp barrierSet.inline.hpp objArrayOop.inline.hpp oop.inline.hpp 32x: g1CollectedHeap.inline.hpp g1ConcurrentMark.inline.hpp g1ConcurrentMarkBitMap.inline.hpp markBitMap.inline.hpp oop.inline.hpp 30x: ciUtilities.inline.hpp interfaceSupport.inline.hpp javaThread.inline.hpp oopHandle.inline.hpp access.inline.hpp barrierSet.inline.hpp objArrayOop.inline.hpp oop.inline.hpp ... 400304 ms: /jdk/src/hotspot/share/oops/oop.inline.hpp (included 1165 times, avg 343 ms), included via: 80x: 70x: javaClasses.inline.hpp access.inline.hpp barrierSet.inline.hpp objArrayOop.inline.hpp 66x: oop.inline.hpp iterator.inline.hpp access.inline.hpp barrierSet.inline.hpp objArrayOop.inline.hpp 60x: javaClasses.inline.hpp access.inline.hpp barrierSet.inline.hpp objArrayOop.inline.hpp oop.inline.hpp iterator.inline.hpp instanceKlass.inline.hpp klass.inline.hpp classLoaderData.inline.hpp 40x: jfrEvents.hpp jfrEventClasses.hpp jfrEvent.hpp jfrNativeEventWriter.hpp jfrEventWriterHost.inline.hpp jfrEventWriterHost.hpp jfrWriterHost.inline.hpp jfrTraceId.inline.hpp javaThread.inline.hpp oopHandle.inline.hpp access.inline.hpp barrierSet.inline.hpp objArrayOop.inline.hpp 39x: shenandoahHeap.inline.hpp javaClasses.inline.hpp access.inline.hpp barrierSet.inline.hpp objArrayOop.inline.hpp ... [...] This should give us a clear understanding of which headers should go into `precompiled.hpp`, and uses all information available from the compiler itself, as opposed to counting the number of inclusions. Now, improvements in build time are comparable with the initial approach I tried in this PR, but I think this approach will prove more accurate in the long term. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3209879924 From ihse at openjdk.org Thu Aug 21 12:19:01 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 21 Aug 2025 12:19:01 GMT Subject: RFR: 8365053: Refresh hotspot precompiled.hpp with headers based on current frequency [v11] In-Reply-To: <-Sya8z4PLvQEJQO1dWl5a31ZEFBg5eBrzUjSv5PVGNo=.0e9484ba-8a5e-475a-abd6-05b6e441bd4c@github.com> References: <-Sya8z4PLvQEJQO1dWl5a31ZEFBg5eBrzUjSv5PVGNo=.0e9484ba-8a5e-475a-abd6-05b6e441bd4c@github.com> Message-ID: <0LwZCnCEv_YJU0E4pfVln83BASYzR6FCPErCCuUnGpw=.7d5a8ca7-c517-416e-ace7-f87f215c9083@github.com> On Tue, 12 Aug 2025 11:32:42 GMT, Francesco Andreuzzi wrote: >> In this PR I propose to refresh the included headers in hotspot `precompiled.hpp`. The current set of precompiled headers was refreshed in 2018, 7 years ago. I repeated the same operations and measurements after refreshing the set of precompiled headers according to the current usage frequency. >> >> These are the results I observed. Depending on the platform, the improvement is between 10 and 20% in terms of total work (user+sys). The results are in seconds. >> >> >> linux-x64 GCC >> master real 81.39 user 3352.15 sys 287.49 >> JDK-8365053 real 81.94 user 3030.24 sys 295.82 >> >> linux-x64 Clang >> master real 43.44 user 2082.93 sys 130.70 >> JDK-8365053 real 38.44 user 1723.80 sys 117.68 >> >> linux-aarch64 GCC >> master real 1188.08 user 2015.22 sys 175.53 >> JDK-8365053 real 1019.85 user 1667.45 sys 171.86 >> >> linux-aarch64 clang >> master real 981.77 user 1645.05 sys 118.60 >> JDK-8365053 real 791.96 user 1262.92 sys 101.50 > > Francesco Andreuzzi has updated the pull request incrementally with two additional commits since the last revision: > > - conditional includes > - variants That's interesting. Hopefully there is some consistency between compilers of how long time headers take to process. Ideally, we should get the same information from Microsoft CL, but I suspect that is not possible. (Since on Windows PCH makes the largest difference of any platform.) ------------- PR Comment: https://git.openjdk.org/jdk/pull/26681#issuecomment-3210358607 From ihse at openjdk.org Thu Aug 21 12:21:00 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Thu, 21 Aug 2025 12:21:00 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v4] In-Reply-To: <8U5zCHQCXe9z3nrLlCwRVgbXCFzWHxqsvI74M1yQ96Y=.4ee013da-22a4-43e3-8660-8bf3c2261450@github.com> References: <0EoWHaPUvqZvxYNRoBbcFdHS9QVXCnfHQqPyd4srQlc=.cfd617e9-5be4-4c14-bf71-68a73d86836b@github.com> <8U5zCHQCXe9z3nrLlCwRVgbXCFzWHxqsvI74M1yQ96Y=.4ee013da-22a4-43e3-8660-8bf3c2261450@github.com> Message-ID: On Wed, 20 Aug 2025 15:21:39 GMT, Magnus Ihse Bursie wrote: >> Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: >> >> after suggestion from Daniel > > It seems to me like there is a need to automatically collect normal test run times automatically, so we can match the timeout given to any individual test with the normal execution time. After all, the purpose of any timeout on tests is to allow the test to execute normally, but not wait too long in case of a problem that causes the test to take too long (or forever) to run. > > I realize that this is highly hardware dependent, but test times tend to be Pareto distributed, so a very quick test maybe takes 1 second on fast machines and 10 on slow, and very slow tests maybe take 15 minutes on fast machines and 40 minutes on slow. In the first case, anything above 15 seconds is probably sus, and in the second case, anything above 60 is probably not good either (I'm just adding 50% to the max time). > > Right now it seems engineers is spending their valuable time giving guesstimates for each individual test. That seems like poorly used time and resources. > @magicus unfortunately that is often not the case in practice. We can see many tests that normally run very quickly but occasionally run very slow - minutes versus seconds. That is surprising and a bit disappointing. I guess it is not worth the effort to try and figure out why this is the case; it could probably vary from test to test and be difficult to track for little gain. Still, it makes you wonder. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26749#issuecomment-3210365303 From kbarrett at openjdk.org Thu Aug 21 14:58:31 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 21 Aug 2025 14:58:31 GMT Subject: RFR: 8314488: Compiling the JDK with C++17 Message-ID: Please review this change to use C++17 for building C++ parts of the JDK. In particular this affects HotSpot. This change also includes an update to the HotSpot Style Guide regarding C++17 features and their use in HotSpot code. Testing: mach5 tier1-8 This change includes a modification of the Style Guide. Rough consensus among the HotSpot Group members is required to make such a change. Only Group members should vote for approval (via the github PR), though reasoned objections or comments from anyone will be considered. A decision on this proposal will not be made before Friday 5-September-2025 at 12h00 UTC. Since we're piggybacking on github PRs here, please use the PR review process to approve (click on Review Changes > Approve), rather than sending a "vote: yes" email reply that would be normal for a CFV. ------------- Commit messages: - fix a couple trailing whitespace issues - update style guide for c++17 - build with c++17 Changes: https://git.openjdk.org/jdk/pull/26884/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26884&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8314488 Stats: 1183 lines in 7 files changed: 1097 ins; 35 del; 51 mod Patch: https://git.openjdk.org/jdk/pull/26884.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26884/head:pull/26884 PR: https://git.openjdk.org/jdk/pull/26884 From jwaters at openjdk.org Thu Aug 21 15:21:52 2025 From: jwaters at openjdk.org (Julian Waters) Date: Thu, 21 Aug 2025 15:21:52 GMT Subject: RFR: 8314488: Compiling the JDK with C++17 In-Reply-To: References: Message-ID: On Thu, 21 Aug 2025 14:47:14 GMT, Kim Barrett wrote: > Please review this change to use C++17 for building C++ parts of the JDK. In > particular this affects HotSpot. This change also includes an update to the > HotSpot Style Guide regarding C++17 features and their use in HotSpot code. > > Testing: mach5 tier1-8 > > This change includes a modification of the Style Guide. Rough consensus among > the HotSpot Group members is required to make such a change. Only Group > members should vote for approval (via the github PR), though reasoned > objections or comments from anyone will be considered. A decision on this > proposal will not be made before Friday 5-September-2025 at 12h00 UTC. > > Since we're piggybacking on github PRs here, please use the PR review process > to approve (click on Review Changes > Approve), rather than sending a "vote: > yes" email reply that would be normal for a CFV. There's a "CXXFLAGS := -std=c++17" in java.base Lib.gmk that's also no longer needed once the switch to C++17 is made (See https://github.com/openjdk/jdk/pull/14988/files) ------------- PR Comment: https://git.openjdk.org/jdk/pull/26884#issuecomment-3211074096 From rcastanedalo at openjdk.org Thu Aug 21 18:26:51 2025 From: rcastanedalo at openjdk.org (Roberto =?UTF-8?B?Q2FzdGHDsWVkYQ==?= Lozano) Date: Thu, 21 Aug 2025 18:26:51 GMT Subject: RFR: 8314488: Compiling the JDK with C++17 In-Reply-To: References: Message-ID: On Thu, 21 Aug 2025 14:47:14 GMT, Kim Barrett wrote: > Please review this change to use C++17 for building C++ parts of the JDK. In > particular this affects HotSpot. This change also includes an update to the > HotSpot Style Guide regarding C++17 features and their use in HotSpot code. > > Testing: mach5 tier1-8 > > This change includes a modification of the Style Guide. Rough consensus among > the HotSpot Group members is required to make such a change. Only Group > members should vote for approval (via the github PR), though reasoned > objections or comments from anyone will be considered. A decision on this > proposal will not be made before Friday 5-September-2025 at 12h00 UTC. > > Since we're piggybacking on github PRs here, please use the PR review process > to approve (click on Review Changes > Approve), rather than sending a "vote: > yes" email reply that would be normal for a CFV. doc/hotspot-style.html line 1544: > 1542: second members don't carry any useful information.

> 1543:

File System Library

> 1544:

The use of the File System library is forbidden. HotSpot doesn't very Suggestion:

The use of the File System library is forbidden. HotSpot doesn't do very ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26884#discussion_r2291827441 From kbarrett at openjdk.org Thu Aug 21 18:43:51 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Thu, 21 Aug 2025 18:43:51 GMT Subject: RFR: 8314488: Compiling the JDK with C++17 In-Reply-To: References: Message-ID: On Thu, 21 Aug 2025 15:19:09 GMT, Julian Waters wrote: > There's a "CXXFLAGS := -std=c++17" in java.base Lib.gmk that's also no longer needed once the switch to C++17 is made (See https://github.com/openjdk/jdk/pull/14988/files) Perhaps. Or perhaps that configuration should be sticky, in case that specific version is still needed when we move to c++20 :) ------------- PR Comment: https://git.openjdk.org/jdk/pull/26884#issuecomment-3211697923 From prr at openjdk.org Fri Aug 22 05:54:55 2025 From: prr at openjdk.org (Phil Race) Date: Fri, 22 Aug 2025 05:54:55 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v5] In-Reply-To: References: Message-ID: On Wed, 20 Aug 2025 17:05:59 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > update testing.md, remove makefile link, fix bad text test/jdk/javax/sound/sampled/Clip/AudioContentHandlers.java line 50: > 48: * @summary URL.getContent() should return SoundClip for supported formats > 49: * @run main/othervm/timeout=480 -Xmx128m AudioContentHandlers > 50: */ I've looked at our CI and this test has run 80,000 times and only 10 of those have gone > 120 seconds (and only 2 > 145 seconds) Perhaps I'd see similar for other tests. But I need to hear test-specific reasons for the test-specific boost of 4x from what I think (120) is the default to 480. Otherwise I'd prefer no change, or a small change, by maybe 1.5x not 4x, and we'll adjust the test when we see evidence that it is not enough. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2292765283 From egahlin at openjdk.org Fri Aug 22 06:09:30 2025 From: egahlin at openjdk.org (Erik Gahlin) Date: Fri, 22 Aug 2025 06:09:30 GMT Subject: RFR: 8365815: JFR: Update metadata.xml with 'jfr query' examples [v3] In-Reply-To: References: Message-ID: <6fDHpUNTm6j5OuFgsDiRpMh3LAYOAUgeayyTA1Eb1h0=.11887e3c-726f-4a74-a985-3e2060a469df@github.com> > Could I have a review of a PR that adds a couple of 'jfr query' examples to metadata.xml? > > It turns out that the EventDuration event doesn't work because it has no fields. The fix is to remove the class-specific commit() method and constructor for events without fields. > > Testing: test/jdk/jdk/jfr + tier1 > > Thanks > Erik Erik Gahlin has updated the pull request incrementally with one additional commit since the last revision: Add s ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26869/files - new: https://git.openjdk.org/jdk/pull/26869/files/9d54c0e5..d6c88bb0 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26869&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26869&range=01-02 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26869.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26869/head:pull/26869 PR: https://git.openjdk.org/jdk/pull/26869 From dholmes at openjdk.org Fri Aug 22 06:38:56 2025 From: dholmes at openjdk.org (David Holmes) Date: Fri, 22 Aug 2025 06:38:56 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v5] In-Reply-To: References: Message-ID: On Fri, 22 Aug 2025 05:51:38 GMT, Phil Race wrote: >> Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: >> >> update testing.md, remove makefile link, fix bad text > > test/jdk/javax/sound/sampled/Clip/AudioContentHandlers.java line 50: > >> 48: * @summary URL.getContent() should return SoundClip for supported formats >> 49: * @run main/othervm/timeout=480 -Xmx128m AudioContentHandlers >> 50: */ > > I've looked at our CI and this test has run 80,000 times and only 10 of those have gone > 120 seconds (and only 2 > 145 seconds) > Perhaps I'd see similar for other tests. But I need to hear test-specific reasons for the test-specific boost of 4x from what I think (120) is the default to 480. > Otherwise I'd prefer no change, or a small change, by maybe 1.5x not 4x, and we'll adjust the test when we see evidence that it is not enough. @prrace the change maintains the same absolute timeout value for those tests. Before the default of 120 was multiplied by the timeoutFactor of 4 to given 480. Now the value 480 is multiplied by the timeoutFactor of 1 to give 480. And IIRC Leo only did that for tests that demonstrated a timeout with the new default settings (120*1). It is not practical for Leo to investigate every changed test to see if it could get away with a value between 120 and 480. The change just maintains the status quo. Test owners are free to investigate further if they think it worth fine tuning these values. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2292836043 From jsjolen at openjdk.org Fri Aug 22 11:08:58 2025 From: jsjolen at openjdk.org (Johan =?UTF-8?B?U2rDtmxlbg==?=) Date: Fri, 22 Aug 2025 11:08:58 GMT Subject: RFR: 8314488: Compiling the JDK with C++17 In-Reply-To: References: Message-ID: On Thu, 21 Aug 2025 14:47:14 GMT, Kim Barrett wrote: > Please review this change to use C++17 for building C++ parts of the JDK. In > particular this affects HotSpot. This change also includes an update to the > HotSpot Style Guide regarding C++17 features and their use in HotSpot code. > > Testing: mach5 tier1-8 > > This change includes a modification of the Style Guide. Rough consensus among > the HotSpot Group members is required to make such a change. Only Group > members should vote for approval (via the github PR), though reasoned > objections or comments from anyone will be considered. A decision on this > proposal will not be made before Friday 5-September-2025 at 12h00 UTC. > > Since we're piggybacking on github PRs here, please use the PR review process > to approve (click on Review Changes > Approve), rather than sending a "vote: > yes" email reply that would be normal for a CFV. Marked as reviewed by jsjolen (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/26884#pullrequestreview-3144083455 From ayang at openjdk.org Fri Aug 22 16:10:58 2025 From: ayang at openjdk.org (Albert Mingkun Yang) Date: Fri, 22 Aug 2025 16:10:58 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v5] In-Reply-To: References: Message-ID: On Wed, 20 Aug 2025 17:05:59 GMT, Leo Korinth wrote: >> This changes the timeout factor from 4 to 1. Most of the changes add timeouts to individual test cases so that I am able to run them with a timeout factor of 0.7 (some margin to the checked in factor of one) >> >> In addition to changing the timeout factor, I am also using a library call to parse the timeout factor from the Java properties (I cannot use the library function everywhere as jtreg does not allow me to add @library notations to non test case files). >> >> My approach has been to run all tests, and afterwards updating those that fail due to the timeout factor. The amount of updated test cases is huge, and my strategy has been to quadruple the timeout if I could not directly see that less was needed. In a few places, I have added a bit more timeout so that it will work with the 0.7 timeout factor. >> >> These fixes have been created when I have ploughed through test cases: >> JDK-8352719: Add an equals sign to the modules statement >> JDK-8352709: Remove bad timing annotations from WhileOpTest.java >> JDK-8352074: Test MemoryLeak.java seems not to test what it is supposed to test >> CODETOOLS-7903937: JTREG uses timeout factor on socket timeout but not on KEEPALIVE >> CODETOOLS-7903961: Make default timeout configurable >> >> After the review, I will update the copyrights. >> >> I have run testing tier1-8. The last time with a timeout factor of 1 instead of 0.7. >> >> I got 4 timing related faults: >> 1) runtime/Thread/TestThreadDumpMonitorContention.java >> This is probably: https://bugs.openjdk.org/browse/JDK-8361370 >> 2) sun/tools/jhsdb/BasicLauncherTest.java >> I am unsure about this one, it has not failed on my runs before, even with a timeout factor of 0.7, maybe I was unlucky. >> 3) gc/stress/TestReclaimStringsLeaksMemory.java >> I updated this to 480 seconds, I finish this fairly fast (~14s) on my not very fast computer, but the Macs that fail are old x86-based ones. >> 4) sun/security/ssl/X509KeyManager/CertChecking.java >> This is a new test that I got on last rebase. I have added a timeout of 480 to it. >> >> In addition to these four tests, I have another one "java/lang/ThreadLocal/MemoryLeak.java" that earlier failed with a timeout factor of 0.7 but did not fail in the last run. I will *not* update that test case, because the extra time spent is strange and should be looked at. I have created JDK-8352074 on that test case, and I will probably create another bug describing the timeout I got. >> >> From the review of the cancelled "8356171: ... > > Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: > > update testing.md, remove makefile link, fix bad text > Before the default of 120 was multiplied by the timeoutFactor of 4 to given 480. Now the value 480 is multiplied by the timeoutFactor of 1 to give 480. I identified some cases that doesn't follow this. Unclear whether they are intentional. test/hotspot/jtreg/compiler/tiered/Level2RecompilationTest.java line 36: > 34: * @build jdk.test.whitebox.WhiteBox > 35: * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox > 36: * @run main/othervm/timeout=960 -Xbootclasspath/a:. -XX:+TieredCompilation Why not `480` in this case? test/hotspot/jtreg/runtime/cds/appcds/LotsOfSyntheticClasses.java line 40: > 38: * @requires vm.cds > 39: * @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds > 40: * @run driver/timeout=8000 LotsOfSyntheticClasses I was expecting `500 * 4 = 2000`, instead of `8000` here. test/hotspot/jtreg/serviceability/jvmti/vthread/SuspendResume2/SuspendResume2.java line 31: > 29: * @compile SuspendResume2.java > 30: * @run driver jdk.test.lib.FileInstaller . . > 31: * @run main/othervm/native/timeout=700 Why `700` instead of `480` in this file? test/jdk/java/rmi/transport/dgcDeadLock/DGCDeadLock.java line 59: > 57: public class DGCDeadLock implements Runnable { > 58: final static public int HOLD_TARGET_TIME = 25000; > 59: public static final double TEST_FAIL_TIME = (HOLD_TARGET_TIME + 30000) * Math.max(TestLibrary.getTimeoutFactor(), 4); Why `max(...)`? If it's for backwards compatibility, shouldn't it be `(HOLD_TARGET_TIME + 30000) * 4 * TestLibrary.getTimeoutFactor()`? test/jdk/java/util/HashMap/WhiteBoxResizeTest.java line 60: > 58: * @comment skip running this test on 32 bit VM > 59: * @requires vm.bits == "64" > 60: * @run testng/othervm/timeout=960 -Xmx2g WhiteBoxResizeTest Why not `480`? test/jdk/java/util/PluggableLocale/LocaleNameProviderTest.java line 34: > 32: * @build com.foobar.Utils > 33: * com.bar.* > 34: * @run junit/othervm/timeout=960 -Djava.locale.providers=CLDR,SPI LocaleNameProviderTest Why not `480`? test/jdk/jdk/jfr/event/oldobject/TestObjectDescription.java line 49: > 47: * @library /test/lib /test/jdk > 48: * @modules jdk.jfr/jdk.jfr.internal.test > 49: * @run main/othervm/timeout=960 -XX:TLABSize=2k jdk.jfr.event.oldobject.TestObjectDescription Why not `480`? test/jdk/tools/jpackage/share/InstallDirTest.java line 69: > 67: * @compile -Xlint:all -Werror InstallDirTest.java > 68: * @requires (jpackage.test.SQETest != null) > 69: * @run main/othervm/timeout=4000 -Xmx512m jdk.jpackage.test.Main Why more than `4x` in this file? test/langtools/jdk/jshell/HangingRemoteAgent.java line 38: > 36: class HangingRemoteAgent extends RemoteExecutionControl { > 37: > 38: private static final int TIMEOUT = (int)(2000 * Double.parseDouble(System.getProperty("test.timeout.factor", "1.0"))); why not `Utils.TIMEOUT_FACTOR`? test/langtools/jdk/jshell/UITesting.java line 148: > 146: } > 147: > 148: private static final long TIMEOUT = (long) (60_000 * Double.parseDouble(System.getProperty("test.timeout.factor", "1.0"))); Why not `Utils.TIMEOUT_FACTOR`? ------------- PR Review: https://git.openjdk.org/jdk/pull/26749#pullrequestreview-3144985957 PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294077875 PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294085201 PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294089550 PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294108202 PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294110136 PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294113670 PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294116148 PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294119800 PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294128741 PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294129243 From prr at openjdk.org Fri Aug 22 17:20:57 2025 From: prr at openjdk.org (Phil Race) Date: Fri, 22 Aug 2025 17:20:57 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v5] In-Reply-To: References: Message-ID: On Fri, 22 Aug 2025 05:51:38 GMT, Phil Race wrote: >> Leo Korinth has updated the pull request incrementally with one additional commit since the last revision: >> >> update testing.md, remove makefile link, fix bad text > > test/jdk/javax/sound/sampled/Clip/AudioContentHandlers.java line 50: > >> 48: * @summary URL.getContent() should return SoundClip for supported formats >> 49: * @run main/othervm/timeout=480 -Xmx128m AudioContentHandlers >> 50: */ > > I've looked at our CI and this test has run 80,000 times and only 10 of those have gone > 120 seconds (and only 2 > 145 seconds) > Perhaps I'd see similar for other tests. But I need to hear test-specific reasons for the test-specific boost of 4x from what I think (120) is the default to 480. > Otherwise I'd prefer no change, or a small change, by maybe 1.5x not 4x, and we'll adjust the test when we see evidence that it is not enough. > @prrace the change maintains the same absolute timeout value for those tests. Before the default of 120 was multiplied by the timeoutFactor of 4 to given 480. Now the value 480 is multiplied by the timeoutFactor of 1 to give 480. And IIRC Leo only did that for tests that demonstrated a timeout with the new default settings (120*1). It is not practical for Leo to investigate every changed test to see if it could get away with a value between 120 and 480. The change just maintains the status quo. Test owners are free to investigate further if they think it worth fine tuning these values. I don't agree. If you are going to modify individual tests, you need to demonstrate what you did for that test is justified or don't do it. I am also questioning whether such a time out was demonstrated for this test. I've searched the entire history of CI jobs and I don't see where Leo had such a timeout of this test. I can send you my query off-line so you can check it. Maybe it is incomplete. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294258341 From ayang at openjdk.org Fri Aug 22 18:45:53 2025 From: ayang at openjdk.org (Albert Mingkun Yang) Date: Fri, 22 Aug 2025 18:45:53 GMT Subject: RFR: 8260555: Change the default TIMEOUT_FACTOR from 4 to 1 [v5] In-Reply-To: References: Message-ID: On Fri, 22 Aug 2025 17:18:40 GMT, Phil Race wrote: > or don't do it. Adding `/timeout=480` is more or less don't do anything. The default timeout (if omitting `/timeout=...`) is 120, so: master: TIMEOUT_FACTOR=4 and /timeout=120 give you actual 480 timeout. patch: TIMEOUT_FACTOR=1 and /timeout=480 give you the same timeout. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26749#discussion_r2294425045 From kbarrett at openjdk.org Fri Aug 22 22:18:46 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Fri, 22 Aug 2025 22:18:46 GMT Subject: RFR: 8314488: Compiling the JDK with C++17 [v2] In-Reply-To: References: Message-ID: > Please review this change to use C++17 for building C++ parts of the JDK. In > particular this affects HotSpot. This change also includes an update to the > HotSpot Style Guide regarding C++17 features and their use in HotSpot code. > > Testing: mach5 tier1-8 > > This change includes a modification of the Style Guide. Rough consensus among > the HotSpot Group members is required to make such a change. Only Group > members should vote for approval (via the github PR), though reasoned > objections or comments from anyone will be considered. A decision on this > proposal will not be made before Friday 5-September-2025 at 12h00 UTC. > > Since we're piggybacking on github PRs here, please use the PR review process > to approve (click on Review Changes > Approve), rather than sending a "vote: > yes" email reply that would be normal for a CFV. Kim Barrett has updated the pull request incrementally with one additional commit since the last revision: fix missing word ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26884/files - new: https://git.openjdk.org/jdk/pull/26884/files/0876cacd..cdd11cce Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26884&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26884&range=00-01 Stats: 3 lines in 2 files changed: 0 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/26884.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26884/head:pull/26884 PR: https://git.openjdk.org/jdk/pull/26884 From duke at openjdk.org Fri Aug 22 23:52:10 2025 From: duke at openjdk.org (Saint Wesonga) Date: Fri, 22 Aug 2025 23:52:10 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v4] In-Reply-To: References: Message-ID: > [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64. > > The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it). Saint Wesonga has updated the pull request incrementally with one additional commit since the last revision: Restore -Ta flag for x64 assembler ------------- Changes: - all: https://git.openjdk.org/jdk/pull/26791/files - new: https://git.openjdk.org/jdk/pull/26791/files/3470f000..42796378 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=26791&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26791&range=02-03 Stats: 7 lines in 1 file changed: 6 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/26791.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/26791/head:pull/26791 PR: https://git.openjdk.org/jdk/pull/26791 From ihse at openjdk.org Sat Aug 23 08:36:53 2025 From: ihse at openjdk.org (Magnus Ihse Bursie) Date: Sat, 23 Aug 2025 08:36:53 GMT Subject: RFR: 8365579: ml64.exe is not the right assembler for Windows aarch64 [v4] In-Reply-To: References: Message-ID: On Fri, 22 Aug 2025 23:52:10 GMT, Saint Wesonga wrote: >> [ml64](https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference?view=msvc-170) is set as the assembler for the Windows platform but is specific to the x64 platform. The [armasm64](https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference?view=msvc-170) assembler should be used for Windows AArch64. >> >> The -c and -Ta options are only valid for ml64 and -Ta can be removed from CompileFile.gmk (assembling for x64 works without it). > > Saint Wesonga has updated the pull request incrementally with one additional commit since the last revision: > > Restore -Ta flag for x64 assembler I'd like to see some more investigation into the removal of `-Ta` before integration, since it is documented as required. An alternative to investigation is to keep it for ml64, by creating a new variable exposed to spec.gmk, similar to how cl.exe needs a `-out:` (or whatever it was called) for where to .obj files. ------------- PR Comment: https://git.openjdk.org/jdk/pull/26791#issuecomment-3216572092