From syan at openjdk.org Mon Dec 1 02:33:02 2025 From: syan at openjdk.org (SendaoYan) Date: Mon, 1 Dec 2025 02:33:02 GMT Subject: RFR: 8371769: TestMemoryInvisibleParent.java fails with java.nio.file.AccessDeniedException [v2] In-Reply-To: References: <9mSQb3fSotVeBtYrpPo-4cqiTKgIwlvWQQUehF2pspE=.9d6fd8b7-8db1-4f67-921e-ba9bf27eb88d@github.com> Message-ID: On Fri, 28 Nov 2025 10:44:47 GMT, Severin Gehwolf wrote: >> SendaoYan 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 two additional commits since the last revision: >> >> - Merge branch 'openjdk:master' into jbs8371769 >> - 8371769: TestMemoryInvisibleParent.java fails java.nio.file.AccessDeniedException > > FYI: Updated the summary on the bug. Please change the PR title accordingly before integrating. Thanks for the reviews @jerboaa @shipilev. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28286#issuecomment-3594266127 From syan at openjdk.org Mon Dec 1 02:33:03 2025 From: syan at openjdk.org (SendaoYan) Date: Mon, 1 Dec 2025 02:33:03 GMT Subject: Integrated: 8371769: TestMemoryInvisibleParent.java fails with java.nio.file.AccessDeniedException In-Reply-To: References: Message-ID: On Thu, 13 Nov 2025 09:28:27 GMT, SendaoYan wrote: > Hi all, > > Test test/hotspot/jtreg/containers/docker/TestMemoryInvisibleParent.java fails when run with non-root user. Test will try to write file /sys/fs/cgroup/memory/hidden-parent-TestMemoryInvisibleParent26/memory.limit_in_bytes, and this will make non-root user report java.nio.file.AccessDeniedException. So I think we should skip this test when user is not root. > > This PR also add prefix indent for a try block, but do not touch the original logic. > > Change has been verified locally on linux-aarch64 with non-root user. This pull request has now been integrated. Changeset: 3fd551f9 Author: SendaoYan URL: https://git.openjdk.org/jdk/commit/3fd551f9926601b05a13a22b556d55425a37ee4d Stats: 14 lines in 1 file changed: 4 ins; 0 del; 10 mod 8371769: TestMemoryInvisibleParent.java fails with java.nio.file.AccessDeniedException Reviewed-by: sgehwolf, shade ------------- PR: https://git.openjdk.org/jdk/pull/28286 From dholmes at openjdk.org Mon Dec 1 04:03:49 2025 From: dholmes at openjdk.org (David Holmes) Date: Mon, 1 Dec 2025 04:03:49 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v3] In-Reply-To: References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: On Fri, 28 Nov 2025 15:54:24 GMT, Jonas Norlinder wrote: >> Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. >> >> This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). >> >> Before patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op >> CPUTime.execute:p0.00 sample 0.008 ms/op >> CPUTime.execute:p0.50 sample 0.008 ms/op >> CPUTime.execute:p0.90 sample 0.008 ms/op >> CPUTime.execute:p0.95 sample 0.008 ms/op >> CPUTime.execute:p0.99 sample 0.012 ms/op >> CPUTime.execute:p0.999 sample 0.015 ms/op >> CPUTime.execute:p0.9999 sample 0.021 ms/op >> CPUTime.execute:p1.00 sample 1.030 ms/op >> >> >> After patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 8984189 ? 10?? ms/op >> CPUTime.execute:p0.00 sample ? 10?? ms/op >> CPUTime.execute:p0.50 sample ? 10?? ms/op >> CPUTime.execute:p0.90 sample ? 10?? ms/op >> CPUTime.execute:p0.95 sample ? 10?? ms/op >> CPUTime.execute:p0.99 sample 0.001 ms/op >> CPUTime.execute:p0.999 sample 0.001 ms/op >> CPUTime.execute:p0.9999 sample 0.006 ms/op >> CPUTime.execute:p1.00 sample 0.054 ms/op >> >> >> Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. > > Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: > > Remove unused imports @JonasNorlinder this PR isn't fixing two issue. I think [JDK-8372584](https://bugs.openjdk.org/browse/JDK-8372584) should just be closed as a duplicate of [JDK-8210452](https://bugs.openjdk.org/browse/JDK-8210452) (which I had forgotten about and which @larry-cable did not get further with). ------------- PR Comment: https://git.openjdk.org/jdk/pull/28556#issuecomment-3594431428 From dholmes at openjdk.org Mon Dec 1 04:13:50 2025 From: dholmes at openjdk.org (David Holmes) Date: Mon, 1 Dec 2025 04:13:50 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v3] In-Reply-To: References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: On Fri, 28 Nov 2025 15:54:24 GMT, Jonas Norlinder wrote: >> Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. >> >> This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). >> >> Before patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op >> CPUTime.execute:p0.00 sample 0.008 ms/op >> CPUTime.execute:p0.50 sample 0.008 ms/op >> CPUTime.execute:p0.90 sample 0.008 ms/op >> CPUTime.execute:p0.95 sample 0.008 ms/op >> CPUTime.execute:p0.99 sample 0.012 ms/op >> CPUTime.execute:p0.999 sample 0.015 ms/op >> CPUTime.execute:p0.9999 sample 0.021 ms/op >> CPUTime.execute:p1.00 sample 1.030 ms/op >> >> >> After patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 8984189 ? 10?? ms/op >> CPUTime.execute:p0.00 sample ? 10?? ms/op >> CPUTime.execute:p0.50 sample ? 10?? ms/op >> CPUTime.execute:p0.90 sample ? 10?? ms/op >> CPUTime.execute:p0.95 sample ? 10?? ms/op >> CPUTime.execute:p0.99 sample 0.001 ms/op >> CPUTime.execute:p0.999 sample 0.001 ms/op >> CPUTime.execute:p0.9999 sample 0.006 ms/op >> CPUTime.execute:p1.00 sample 0.054 ms/op >> >> >> Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. > > Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: > > Remove unused imports Overall looks good. I'd forgotten that I found about this in 2018. A few minor nits. Can't really comment on the benchmark. src/hotspot/os/linux/os_linux.cpp line 4961: > 4959: } > 4960: > 4961: // Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types Suggestion: // Since kernel v2.6.12 the Linux ABI has had support for encoding the clock types src/hotspot/os/linux/os_linux.cpp line 4968: > 4966: // POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. > 4967: static clockid_t get_thread_clockid(Thread* thread, bool total, bool* success) { > 4968: constexpr clockid_t CLOCK_TYPE_MASK = 3; Shouldn't the mask be covering 3-bits? src/hotspot/os/linux/os_linux.cpp line 4979: > 4977: // to detach itself from the VM - which should result in ESRCH. > 4978: assert_status(rc == ESRCH, rc, "pthread_getcpuclockid failed"); > 4979: *success = false; The normal way I've seen this pattern used is to set it to true rather than assuming it was true to begin with. ------------- PR Review: https://git.openjdk.org/jdk/pull/28556#pullrequestreview-3523063061 PR Review Comment: https://git.openjdk.org/jdk/pull/28556#discussion_r2575538639 PR Review Comment: https://git.openjdk.org/jdk/pull/28556#discussion_r2575548230 PR Review Comment: https://git.openjdk.org/jdk/pull/28556#discussion_r2575553017 From aboldtch at openjdk.org Mon Dec 1 06:55:58 2025 From: aboldtch at openjdk.org (Axel Boldt-Christmas) Date: Mon, 1 Dec 2025 06:55:58 GMT Subject: RFR: 8371762: Incorrect use of checked_cast in Arguments::process_settings_file [v3] In-Reply-To: References: Message-ID: > [JDK-8313882](https://bugs.openjdk.org/browse/JDK-8313882) introduced a `checked_cast` when to silence the Wconversion warnings when we store an `int` in a `char`. The problem is that the assumption that the value in the `int` we get from `getc` is compatible with `char` is incorrect. > > The specification for `getc` is that it returns either `EOF` or the next read `unsigned char` converted to an `int`. This means we have the possible values of `{EOF, 0-255}`, we always check for `EOF` first, so we end up only having `{0-255}` as the possible values. (While a char has the possible values of `{-128-127}`.) > > So first the problem with `checked_cast` (which ensures that the type roundtrip is lossless) will end up converting any value in `{128-255}` to `{-128, -1}` which when converted back to an `int` is `{-128, -1}` and not `{128-255}`. > > The thing is that this is not a problem except for the assert as we do not care if the conversion roundtrip is lossless. We only want to reinterpret the value as a `char`, and never try to regain the unsigned representation converted to an `int` that `getc` uses. > > Another issue with keeping the value inside an `int` which could lead to bugs in the future is that when we use it in equality comparison agains a `char` we will encounter an integer promotion of the `char` which will lead to surprising incorrect results if the character is non-ascii. > > Currently we have no such comparisons of this `int` vs a non-ascii character. So the only issue is the assert inside `checked_cast` which will trigger if the settings file contains a non-ascii character. > > I suggest we convert the return value from `getc` to a `char` after we have check for `EOF` and before we use it as a character. > > It is worth noting that the `(unsigned char)` casts for the calls into `isspace` (introduced by [JDK-8332400](https://bugs.openjdk.org/browse/JDK-8332400)) is very important to get the correct value for its `int` input parameter. (So we get the correct non-sign extended cast `char -> unsigned char -> int`.) That issue mentions the possibility of introducing our own `isspace` (suggestion was `os::isspace`) which we could overload the different types and do the correct thing with bound checks. This might be something we want to revisit. > > _`isspace` specification:_ >>The behavior is undefined if the value of ch is not representable as unsigned char and is not equal to [EOF](https://en.cppreference.com/w/c/io.html). > > * Testing > * GHA > * Running tier 1-3 on Oracl... Axel Boldt-Christmas 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: - Merge tag 'jdk-26+26' into JDK-8371762 Added tag jdk-26+26 for changeset 847fbab7 - Update src/hotspot/share/runtime/arguments.cpp Co-authored-by: David Holmes <62092539+dholmes-ora at users.noreply.github.com> - 8371762: Incorrect use of checked_cast in Arguments::process_settings_file ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28283/files - new: https://git.openjdk.org/jdk/pull/28283/files/8d9337d4..77e0abdf Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28283&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28283&range=01-02 Stats: 242396 lines in 1970 files changed: 163762 ins; 42364 del; 36270 mod Patch: https://git.openjdk.org/jdk/pull/28283.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28283/head:pull/28283 PR: https://git.openjdk.org/jdk/pull/28283 From mbaesken at openjdk.org Mon Dec 1 07:52:55 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Mon, 1 Dec 2025 07:52:55 GMT Subject: RFR: 8372272: Hotspot shared lib loading - add load attempts to Events::log In-Reply-To: References: Message-ID: On Fri, 28 Nov 2025 17:37:24 GMT, Lutz Schmidt wrote: > Looks good as far as new code is concerned. Thanks the reviews ! > > Is it by intention that on windows the action is logged twice (log_info and Events::log_dll_message)? One call is for UL , one is for hserr/hsinfo files event log. So not really the same 'target' . Btw. on the non-Windows OS platforms you find the UL log_info call too, e.g. see os_linux.cpp `os::dll_load` . ------------- PR Comment: https://git.openjdk.org/jdk/pull/28452#issuecomment-3595087164 From nbenalla at openjdk.org Mon Dec 1 08:53:37 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Mon, 1 Dec 2025 08:53:37 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: > Get JDK 27 underway. Nizar Benalla 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 17 additional commits since the last revision: - problem list failing test - Merge branch 'master' into start-of-release-27 - expand start of release documentation - Merge branch 'master' into start-of-release-27 - Changes required for hard 80 character line limit - Update --release 26 symbol information for JDK 26 build 25 The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ - revert MAX_COLUMNS to 80 - Update LATEST_MAJOR_VERSION in Versions.java - Merge branch 'master' into start-of-release-27 - Merge branch 'master' into start-of-release-27 - ... and 7 more: https://git.openjdk.org/jdk/compare/41b7823d...e5214614 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/78895b2b..e5214614 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=06 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=05-06 Stats: 11187 lines in 367 files changed: 7430 ins; 1793 del; 1964 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From aartemov at openjdk.org Mon Dec 1 10:35:49 2025 From: aartemov at openjdk.org (Anton Artemov) Date: Mon, 1 Dec 2025 10:35:49 GMT Subject: RFR: 8366659: ObjectMonitor::wait() can deadlock with a suspension request [v18] In-Reply-To: References: Message-ID: > Hi, please consider the following changes: > > If suspension is allowed when a thread is re-entering an object monitor (OM), then a deadlock is possible: > > The waiting thread is made to be a successor and is unparked. Upon a suspension request, the thread will suspend itself whilst clearing the successor. The OM will be left unlocked (not grabbed by any thread), while the other threads are parked until a thread grabs the OM and the exits it. The suspended thread is on the entry-list and can be selected as a successor again. None of other threads can be woken up to grab the OM until the suspended thread has been resumed and successfully releases the OM. > > This can happen in two places where the successor could be suspended: > 1: > https://github.com/openjdk/jdk/blob/6322aaba63b235cb6c73d23a932210af318404ec/src/hotspot/share/runtime/objectMonitor.cpp#L1897 > > 2: > https://github.com/openjdk/jdk/blob/6322aaba63b235cb6c73d23a932210af318404ec/src/hotspot/share/runtime/objectMonitor.cpp#L1149 > > The issues are addressed by not allowing suspension in case 1, and by handling the suspension request at a later stage, after the thread has grabbed the OM in `reenter_internal()` in case 2. In case of a suspension request, the thread exits the OM and enters it again once resumed. > > The JVMTI `waited` event posting (2nd one) is postponed until the suspended thread is resumed and has entered the OM again. The `enter` to the OM (in case `ExitOnSuspend` did exit) is done without posting any events. > > Tests are added for both scenarios. > > Tested in tiers 1 - 7. Anton Artemov has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 34 commits: - Merge remote-tracking branch 'origin/master' into JDK-8366659-OM-wait-suspend-deadlock - 8366659: Fixed whitespace error. - 8366659: Refactoring. - Merge remote-tracking branch 'origin/master' into JDK-8366659-OM-wait-suspend-deadlock - 8366659: Fixed tests. - 8366659: Fixed tests. - 8366659: Refactored tests. - 8366659: Added bool arg to notify_contended_enter - 8366659: Refactored the big test into 3 smaller tests. - 8366659: Addressed reviewer's comments. - ... and 24 more: https://git.openjdk.org/jdk/compare/ef5e744a...8283d9c0 ------------- Changes: https://git.openjdk.org/jdk/pull/27040/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27040&range=17 Stats: 1277 lines in 9 files changed: 828 ins; 427 del; 22 mod Patch: https://git.openjdk.org/jdk/pull/27040.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/27040/head:pull/27040 PR: https://git.openjdk.org/jdk/pull/27040 From jnorlinder at openjdk.org Mon Dec 1 11:45:49 2025 From: jnorlinder at openjdk.org (Jonas Norlinder) Date: Mon, 1 Dec 2025 11:45:49 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v3] In-Reply-To: References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: On Mon, 1 Dec 2025 04:04:19 GMT, David Holmes wrote: >> Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: >> >> Remove unused imports > > src/hotspot/os/linux/os_linux.cpp line 4968: > >> 4966: // POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. >> 4967: static clockid_t get_thread_clockid(Thread* thread, bool total, bool* success) { >> 4968: constexpr clockid_t CLOCK_TYPE_MASK = 3; > > Shouldn't the mask be covering 3-bits? No we should not touch bit 3 which encodes if the clock is for a thread of process. See here https://elixir.bootlin.com/linux/v6.17.9/source/include/linux/posix-timers_types.h#L9-L19. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28556#discussion_r2576734534 From jnorlinder at openjdk.org Mon Dec 1 11:53:54 2025 From: jnorlinder at openjdk.org (Jonas Norlinder) Date: Mon, 1 Dec 2025 11:53:54 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v4] In-Reply-To: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: <9Yx-NbaCfboU7u4tifXbMaK_Vvz9mrASr9g_svKKBr8=.a330bbf4-5208-4208-8e20-b259fe41f278@github.com> > Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. > > This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). > > Before patch: > > Benchmark Mode Cnt Score Error Units > CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op > CPUTime.execute:p0.00 sample 0.008 ms/op > CPUTime.execute:p0.50 sample 0.008 ms/op > CPUTime.execute:p0.90 sample 0.008 ms/op > CPUTime.execute:p0.95 sample 0.008 ms/op > CPUTime.execute:p0.99 sample 0.012 ms/op > CPUTime.execute:p0.999 sample 0.015 ms/op > CPUTime.execute:p0.9999 sample 0.021 ms/op > CPUTime.execute:p1.00 sample 1.030 ms/op > > > After patch: > > Benchmark Mode Cnt Score Error Units > CPUTime.execute sample 8984189 ? 10?? ms/op > CPUTime.execute:p0.00 sample ? 10?? ms/op > CPUTime.execute:p0.50 sample ? 10?? ms/op > CPUTime.execute:p0.90 sample ? 10?? ms/op > CPUTime.execute:p0.95 sample ? 10?? ms/op > CPUTime.execute:p0.99 sample 0.001 ms/op > CPUTime.execute:p0.999 sample 0.001 ms/op > CPUTime.execute:p0.9999 sample 0.006 ms/op > CPUTime.execute:p1.00 sample 0.054 ms/op > > > Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: Fix grammar ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28556/files - new: https://git.openjdk.org/jdk/pull/28556/files/c022266d..a9628846 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28556&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28556&range=02-03 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28556.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28556/head:pull/28556 PR: https://git.openjdk.org/jdk/pull/28556 From jnorlinder at openjdk.org Mon Dec 1 11:53:57 2025 From: jnorlinder at openjdk.org (Jonas Norlinder) Date: Mon, 1 Dec 2025 11:53:57 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v3] In-Reply-To: References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: On Mon, 1 Dec 2025 04:08:23 GMT, David Holmes wrote: >> Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: >> >> Remove unused imports > > src/hotspot/os/linux/os_linux.cpp line 4979: > >> 4977: // to detach itself from the VM - which should result in ESRCH. >> 4978: assert_status(rc == ESRCH, rc, "pthread_getcpuclockid failed"); >> 4979: *success = false; > > The normal way I've seen this pattern used is to set it to true rather than assuming it was true to begin with. Using a positive outcome like success to encode the outcome make it possible to return like so `return success ? os::Linux::thread_cpu_time(clockid) : -1;`. I prefer having the `-1` at the end as I find this reads easier. If we encode a failure we would need to write `return !failure ? os::Linux::thread_cpu_time(clockid) : -1;`. Hence, I would prefer keeping this as is as double-negatives may be harder to parse. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28556#discussion_r2576747078 From mgronlun at openjdk.org Mon Dec 1 12:17:21 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Mon, 1 Dec 2025 12:17:21 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v7] In-Reply-To: References: Message-ID: > Greetings, > > this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. > > To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. > > Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. > > Testing: jdk_jfr, manual AOT verification, stress testing > > Thanks > Markus Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: adjustments ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28505/files - new: https://git.openjdk.org/jdk/pull/28505/files/c0e1124e..ba54d2af Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=06 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=05-06 Stats: 11 lines in 4 files changed: 0 ins; 1 del; 10 mod Patch: https://git.openjdk.org/jdk/pull/28505.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28505/head:pull/28505 PR: https://git.openjdk.org/jdk/pull/28505 From coleenp at openjdk.org Mon Dec 1 13:11:12 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Mon, 1 Dec 2025 13:11:12 GMT Subject: RFR: 8371347: Move the ObjectMonitorTable to a separate new file In-Reply-To: References: Message-ID: On Sat, 29 Nov 2025 11:21:52 GMT, Fredrik Bredberg wrote: > The request to move the `ObjectMonitorTable` to a separate new file came from this review comment: https://github.com/openjdk/jdk/pull/27915#discussion_r2459848893 > > By moving the `ObjectMonitorTable` implementation out of `runtime/synchronizer.cpp` into `runtime/objectMonitorTable.[ch]pp` will make a future transition from the current `ObjectMonitorTable` implementation to a new (and better) implementation appear more clean. > > Passes tier1-7 without any problems that can be traced to this PR. If you're able to hide more of the implementation in the cpp file it'll be less dramatic when you change it. src/hotspot/share/runtime/objectMonitorTable.hpp line 35: > 33: > 34: class ObjectMonitorTable : AllStatic { > 35: struct Config { Can you hide all of this in the .cpp file like symbolTable.cpp hides the CHT implementation instead of having it all in the hpp file? The interface only needs to be the functions at the end. ------------- Changes requested by coleenp (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28565#pullrequestreview-3524909068 PR Review Comment: https://git.openjdk.org/jdk/pull/28565#discussion_r2577009871 From azeller at openjdk.org Mon Dec 1 13:28:52 2025 From: azeller at openjdk.org (Arno Zeller) Date: Mon, 1 Dec 2025 13:28:52 GMT Subject: RFR: 8372272: Hotspot shared lib loading - add load attempts to Events::log In-Reply-To: References: Message-ID: On Fri, 21 Nov 2025 13:03:23 GMT, Matthias Baesken wrote: > Currently we log only the success or failure of shared lib load operations in HS > (by calling Events::log_dll_message). > Adding log messages for load attempts would help us in a number of cases : > - give timestamps before AND after the load operation > - log in hs_err file shared lib loads leading to crashes (there we do not see currently the success or failure of the dlopen operation) LGTM. ------------- Marked as reviewed by azeller (Author). PR Review: https://git.openjdk.org/jdk/pull/28452#pullrequestreview-3524984491 From coleenp at openjdk.org Mon Dec 1 13:31:07 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Mon, 1 Dec 2025 13:31:07 GMT Subject: RFR: 8365526: Crash with null Symbol passed to SystemDictionary::resolve_or_null [v7] In-Reply-To: References: Message-ID: On Thu, 27 Nov 2025 13:40:44 GMT, Coleen Phillimore wrote: >> The vm was crashing because the constant pool couldn't find the resolution error in the ResolutionErrorEntry error field. >> >> There are two uses of ResolutionErrorEntry in the ResolutionErrorTable. The key to this table is {ConstantPool, cp-index}. In this crash, multiple threads were racing to record nest_host_errors in the case where resolution failed. In this case, there was already a ResolutionErrorEntry in the table for the constant pool resolution failure. In the 'if' case of add_nest_host_error we check to see if there's already a nest_host_error assuming it's the same error, then the 'else' case was unconditionally adding a ResolutionErrorEntry with just the nest host message. Calling HashTable::put() with this entry with just the nest host message, was overwriting the entry with the constant pool resolution error, ie. the other fields. The crash happened in ConstantPool::throw_resolution_error() because the error field was overwritten (and leaked too). >> >> Add a null check before calling ResolutionErrorEntry add entry. Also added an assert that we only add a resolution error for nest host errors in the case of success since in the case of failure there will always already be a ResolutionErrorEntry for the failing constant pool and cp index and we don't want to overwrite that again. >> >> Tested with submitted reproducer and tier1-4. > > Coleen Phillimore has updated the pull request incrementally with one additional commit since the last revision: > > Update src/hotspot/share/classfile/systemDictionary.cpp Thanks David, Johan for discussions and reviews, to Tom for the review and reproducer and all his help, and to Ioi for finding another leak. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28438#issuecomment-3596547230 From coleenp at openjdk.org Mon Dec 1 13:31:09 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Mon, 1 Dec 2025 13:31:09 GMT Subject: Integrated: 8365526: Crash with null Symbol passed to SystemDictionary::resolve_or_null In-Reply-To: References: Message-ID: On Thu, 20 Nov 2025 17:00:04 GMT, Coleen Phillimore wrote: > The vm was crashing because the constant pool couldn't find the resolution error in the ResolutionErrorEntry error field. > > There are two uses of ResolutionErrorEntry in the ResolutionErrorTable. The key to this table is {ConstantPool, cp-index}. In this crash, multiple threads were racing to record nest_host_errors in the case where resolution failed. In this case, there was already a ResolutionErrorEntry in the table for the constant pool resolution failure. In the 'if' case of add_nest_host_error we check to see if there's already a nest_host_error assuming it's the same error, then the 'else' case was unconditionally adding a ResolutionErrorEntry with just the nest host message. Calling HashTable::put() with this entry with just the nest host message, was overwriting the entry with the constant pool resolution error, ie. the other fields. The crash happened in ConstantPool::throw_resolution_error() because the error field was overwritten (and leaked too). > > Add a null check before calling ResolutionErrorEntry add entry. Also added an assert that we only add a resolution error for nest host errors in the case of success since in the case of failure there will always already be a ResolutionErrorEntry for the failing constant pool and cp index and we don't want to overwrite that again. > > Tested with submitted reproducer and tier1-4. This pull request has now been integrated. Changeset: b98114f4 Author: Coleen Phillimore URL: https://git.openjdk.org/jdk/commit/b98114f4a20bcf3390114b56d05c38b23268979a Stats: 27 lines in 3 files changed: 16 ins; 5 del; 6 mod 8365526: Crash with null Symbol passed to SystemDictionary::resolve_or_null Reviewed-by: dholmes, never, jsjolen ------------- PR: https://git.openjdk.org/jdk/pull/28438 From mbaesken at openjdk.org Mon Dec 1 13:40:00 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Mon, 1 Dec 2025 13:40:00 GMT Subject: RFR: 8372272: Hotspot shared lib loading - add load attempts to Events::log In-Reply-To: References: Message-ID: On Fri, 21 Nov 2025 13:03:23 GMT, Matthias Baesken wrote: > Currently we log only the success or failure of shared lib load operations in HS > (by calling Events::log_dll_message). > Adding log messages for load attempts would help us in a number of cases : > - give timestamps before AND after the load operation > - log in hs_err file shared lib loads leading to crashes (there we do not see currently the success or failure of the dlopen operation) Thanks for the reviews ! ------------- PR Comment: https://git.openjdk.org/jdk/pull/28452#issuecomment-3596591210 From mbaesken at openjdk.org Mon Dec 1 13:40:01 2025 From: mbaesken at openjdk.org (Matthias Baesken) Date: Mon, 1 Dec 2025 13:40:01 GMT Subject: Integrated: 8372272: Hotspot shared lib loading - add load attempts to Events::log In-Reply-To: References: Message-ID: On Fri, 21 Nov 2025 13:03:23 GMT, Matthias Baesken wrote: > Currently we log only the success or failure of shared lib load operations in HS > (by calling Events::log_dll_message). > Adding log messages for load attempts would help us in a number of cases : > - give timestamps before AND after the load operation > - log in hs_err file shared lib loads leading to crashes (there we do not see currently the success or failure of the dlopen operation) This pull request has now been integrated. Changeset: d328e4e7 Author: Matthias Baesken URL: https://git.openjdk.org/jdk/commit/d328e4e7e2f58fbfeb661f3502f95016159d7230 Stats: 8 lines in 4 files changed: 8 ins; 0 del; 0 mod 8372272: Hotspot shared lib loading - add load attempts to Events::log Reviewed-by: lucy, azeller ------------- PR: https://git.openjdk.org/jdk/pull/28452 From cnorrbin at openjdk.org Mon Dec 1 14:07:22 2025 From: cnorrbin at openjdk.org (Casper Norrbin) Date: Mon, 1 Dec 2025 14:07:22 GMT Subject: RFR: 8358706: Integer overflow with -XX:MinOopMapAllocation=-1 Message-ID: Hi everyone, Passing a negative value to `-XX:MinOopMapAllocation` could trigger an integer overflow. This value is used as the initial size for the `OopMap` `GrowableArray` list inside `OopMapSet`. Negative inputs hits an assert when allocating for `GrowableArray`. Restricting this flag to positive values ensures we get a clear error message instead of a crash. Testing: - Oracle tier 1 - Local tests with `-XX:MinOopMapAllocation=x`, covering both valid and invalid values. ------------- Commit messages: - constraint on MinOopMapAllocation Changes: https://git.openjdk.org/jdk/pull/28576/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28576&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8358706 Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28576.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28576/head:pull/28576 PR: https://git.openjdk.org/jdk/pull/28576 From phubner at openjdk.org Mon Dec 1 14:15:00 2025 From: phubner at openjdk.org (Paul =?UTF-8?B?SMO8Ym5lcg==?=) Date: Mon, 1 Dec 2025 14:15:00 GMT Subject: RFR: 8358706: Integer overflow with -XX:MinOopMapAllocation=-1 In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 14:00:22 GMT, Casper Norrbin wrote: > Hi everyone, > > Passing a negative value to `-XX:MinOopMapAllocation` could trigger an integer overflow. This value is used as the initial size for the `OopMap` `GrowableArray` list inside `OopMapSet`. Negative inputs hits an assert when allocating for `GrowableArray`. Restricting this flag to positive values ensures we get a clear error message instead of a crash. > > Testing: > - Oracle tier 1 > - Local tests with `-XX:MinOopMapAllocation=x`, covering both valid and invalid values. src/hotspot/share/runtime/globals.hpp line 1674: > 1672: \ > 1673: /* new oopmap storage allocation */ \ > 1674: develop(intx, MinOopMapAllocation, 8, \ Shouldn't we also make this an `int` while we're at it since a `GrowableArray`'s length is kept as an `int`? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28576#discussion_r2577252382 From cnorrbin at openjdk.org Mon Dec 1 14:30:58 2025 From: cnorrbin at openjdk.org (Casper Norrbin) Date: Mon, 1 Dec 2025 14:30:58 GMT Subject: RFR: 8358706: Integer overflow with -XX:MinOopMapAllocation=-1 In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 14:12:35 GMT, Paul H?bner wrote: >> Hi everyone, >> >> Passing a negative value to `-XX:MinOopMapAllocation` could trigger an integer overflow. This value is used as the initial size for the `OopMap` `GrowableArray` list inside `OopMapSet`. Negative inputs hits an assert when allocating for `GrowableArray`. Restricting this flag to positive values ensures we get a clear error message instead of a crash. >> >> Testing: >> - Oracle tier 1 >> - Local tests with `-XX:MinOopMapAllocation=x`, covering both valid and invalid values. > > src/hotspot/share/runtime/globals.hpp line 1674: > >> 1672: \ >> 1673: /* new oopmap storage allocation */ \ >> 1674: develop(intx, MinOopMapAllocation, 8, \ > > Shouldn't we also make this an `int` while we're at it since a `GrowableArray`'s length is kept as an `int`? Sure, I could change the type as well. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28576#discussion_r2577310164 From cnorrbin at openjdk.org Mon Dec 1 14:33:19 2025 From: cnorrbin at openjdk.org (Casper Norrbin) Date: Mon, 1 Dec 2025 14:33:19 GMT Subject: RFR: 8358706: Integer overflow with -XX:MinOopMapAllocation=-1 [v2] In-Reply-To: References: Message-ID: > Hi everyone, > > Passing a negative value to `-XX:MinOopMapAllocation` could trigger an integer overflow. This value is used as the initial size for the `OopMap` `GrowableArray` list inside `OopMapSet`. Negative inputs hits an assert when allocating for `GrowableArray`. Restricting this flag to positive values ensures we get a clear error message instead of a crash. > > Testing: > - Oracle tier 1 > - Local tests with `-XX:MinOopMapAllocation=x`, covering both valid and invalid values. Casper Norrbin has updated the pull request incrementally with one additional commit since the last revision: change flag type to int ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28576/files - new: https://git.openjdk.org/jdk/pull/28576/files/6ded9479..a1555d99 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28576&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28576&range=00-01 Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/28576.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28576/head:pull/28576 PR: https://git.openjdk.org/jdk/pull/28576 From ayang at openjdk.org Mon Dec 1 14:35:42 2025 From: ayang at openjdk.org (Albert Mingkun Yang) Date: Mon, 1 Dec 2025 14:35:42 GMT Subject: RFR: 8371587: Final mapping lost in ProcSmapsParser::parse_next [v3] In-Reply-To: References: Message-ID: > A simple fix for off-by-one error in parsing `smaps` -- the final mapping is never recorded as we exits the parsing loop too early. > > The spec of `parse_next` is updated to reflects what its caller expects. The newly added gtest fails without this path. > > > Test: tier1 Albert Mingkun Yang 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 'master' into smap-parser - review - copyright-header - review - Merge branch 'master' into smap-parser - smap-parser ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28225/files - new: https://git.openjdk.org/jdk/pull/28225/files/c179ccd5..cfe12245 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28225&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28225&range=01-02 Stats: 22816 lines in 521 files changed: 12611 ins; 7329 del; 2876 mod Patch: https://git.openjdk.org/jdk/pull/28225.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28225/head:pull/28225 PR: https://git.openjdk.org/jdk/pull/28225 From fandreuzzi at openjdk.org Mon Dec 1 14:35:42 2025 From: fandreuzzi at openjdk.org (Francesco Andreuzzi) Date: Mon, 1 Dec 2025 14:35:42 GMT Subject: RFR: 8371587: Final mapping lost in ProcSmapsParser::parse_next [v3] In-Reply-To: References: Message-ID: <5yWuePfzX0lxchsJ7Hg-6d8S0_o3h849tgBvZHZdLDs=.d6bf7151-b565-48cf-8a7d-4fb91d3e01d0@github.com> On Mon, 1 Dec 2025 14:32:53 GMT, Albert Mingkun Yang wrote: >> A simple fix for off-by-one error in parsing `smaps` -- the final mapping is never recorded as we exits the parsing loop too early. >> >> The spec of `parse_next` is updated to reflects what its caller expects. The newly added gtest fails without this path. >> >> >> Test: tier1 > > Albert Mingkun Yang 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 'master' into smap-parser > - review > - copyright-header > - review > - Merge branch 'master' into smap-parser > - smap-parser Marked as reviewed by fandreuzzi (Author). ------------- PR Review: https://git.openjdk.org/jdk/pull/28225#pullrequestreview-3525296627 From jsjolen at openjdk.org Mon Dec 1 14:39:12 2025 From: jsjolen at openjdk.org (Johan =?UTF-8?B?U2rDtmxlbg==?=) Date: Mon, 1 Dec 2025 14:39:12 GMT Subject: RFR: 8371587: Final mapping lost in ProcSmapsParser::parse_next [v3] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 14:35:42 GMT, Albert Mingkun Yang wrote: >> A simple fix for off-by-one error in parsing `smaps` -- the final mapping is never recorded as we exits the parsing loop too early. >> >> The spec of `parse_next` is updated to reflects what its caller expects. The newly added gtest fails without this path. >> >> >> Test: tier1 > > Albert Mingkun Yang 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 'master' into smap-parser > - review > - copyright-header > - review > - Merge branch 'master' into smap-parser > - smap-parser Marked as reviewed by jsjolen (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28225#pullrequestreview-3525319813 From liach at openjdk.org Mon Dec 1 15:40:40 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 1 Dec 2025 15:40:40 GMT Subject: RFR: 8372696: Allow boot classes to explicitly opt-in for final field trusting [v3] In-Reply-To: References: Message-ID: > Currently, the hotspot compiler (as in ciField) trusts final fields in hidden classes, record classes, and selected jdk packages. Some classes in the JDK wish to be trusted, but they cannot apply package-wide opt-in due to other legacy classes in the package, such as java.util. > > They currently can use `@Stable` as a workaround, but this is fragile because a stable final field may hold a trusted null, zero, or false value, which is currently treated as non-constant by ciField. > > We should add an annotation to opt-in for a whole class, mainly for legacy packages. This would benefit greatly some of our classes already using a lot of Stable, such as java.util.Optional, whose empty instance is now constant-foldable, as demonstrated in a new IR test. > > Paging @minborg who requested Optional folding for review. > > I think we can remove redundant Stable in a few other java.util classes after this patch is integrated. I plan to do that in subsequent patches. Chen Liang has updated the pull request incrementally with one additional commit since the last revision: Doc tweaks ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28540/files - new: https://git.openjdk.org/jdk/pull/28540/files/712dbf1c..7a1cfa4a Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28540&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28540&range=01-02 Stats: 25 lines in 1 file changed: 0 ins; 24 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28540.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28540/head:pull/28540 PR: https://git.openjdk.org/jdk/pull/28540 From coleenp at openjdk.org Mon Dec 1 15:57:10 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Mon, 1 Dec 2025 15:57:10 GMT Subject: RFR: 8372696: Allow boot classes to explicitly opt-in for final field trusting [v3] In-Reply-To: References: Message-ID: <379iBIu0uk_Af-5_RZUQBFNkGyFM7iYpe4B_hg93tn8=.95e6e771-31f5-4b89-8172-aa3d0837de25@github.com> On Mon, 1 Dec 2025 15:40:40 GMT, Chen Liang wrote: >> Currently, the hotspot compiler (as in ciField) trusts final fields in hidden classes, record classes, and selected jdk packages. Some classes in the JDK wish to be trusted, but they cannot apply package-wide opt-in due to other legacy classes in the package, such as java.util. >> >> They currently can use `@Stable` as a workaround, but this is fragile because a stable final field may hold a trusted null, zero, or false value, which is currently treated as non-constant by ciField. >> >> We should add an annotation to opt-in for a whole class, mainly for legacy packages. This would benefit greatly some of our classes already using a lot of Stable, such as java.util.Optional, whose empty instance is now constant-foldable, as demonstrated in a new IR test. >> >> Paging @minborg who requested Optional folding for review. >> >> I think we can remove redundant Stable in a few other java.util classes after this patch is integrated. I plan to do that in subsequent patches. > > Chen Liang has updated the pull request incrementally with one additional commit since the last revision: > > Doc tweaks With one small change, the runtime part of this change looks good. src/hotspot/share/ci/ciField.cpp line 220: > 218: return false; > 219: // Explicit opt-in from system classes > 220: if (holder->trust_final_fields()) This is missing { } so not sure where it ends, especially that it encloses an if statement, and other code. ------------- Changes requested by coleenp (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28540#pullrequestreview-3525748039 PR Review Comment: https://git.openjdk.org/jdk/pull/28540#discussion_r2577662841 From liach at openjdk.org Mon Dec 1 16:03:38 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 1 Dec 2025 16:03:38 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 08:53:37 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla 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 17 additional commits since the last revision: > > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - Merge branch 'master' into start-of-release-27 > - Changes required for hard 80 character line limit > - Update --release 26 symbol information for JDK 26 build 25 > The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ > - revert MAX_COLUMNS to 80 > - Update LATEST_MAJOR_VERSION in Versions.java > - Merge branch 'master' into start-of-release-27 > - Merge branch 'master' into start-of-release-27 > - ... and 7 more: https://git.openjdk.org/jdk/compare/3c6406b2...e5214614 bin/generate-symbol-data.sh line 41: > 39: # - open a terminal program and run these commands: > 40: # cd "${JDK_CHECKOUT}"/src/jdk.compiler/share/data/symbols > 41: # bash ../../../../../bin/generate-symbol-data.sh "${JDK_N_INSTALL}" Same, extract to 26 doc/starting-next-release.md line 68: > 66: update annotation processor extended by `javac` tests to cover the new source version > 67: * `test/langtools/tools/javac/preview/classReaderTest/Client.nopreview.out` and `test/langtools/tools/javac/preview/classReaderTest/Client.preview.out`: update expected messages for preview errors and warnings > 68: * `test/langtools/tools/javac/versions/Versions.java`: add new source version to the set of valid sources and add new enum constant for the new class file version. Same remark, extract to 26 src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java line 382: > 380: * > 381: * @see 382: * href="https://docs.oracle.com/en/java/javase/26/docs/specs/jvms/index.html"> This change should be included in the codebase for JDK 26. You can create a new issue for this, and commit this change before this PR is integrated. src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java line 1: > 1: /* Let's extract this change to 26 src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties line 1: > 1: # Let's extract this for 26. src/jdk.compiler/share/data/symbols/README line 1: > 1: This directory contains history data for -release. Let's extract this for 26. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577666303 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577665823 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577662551 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577673512 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577675100 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577674956 From nbenalla at openjdk.org Mon Dec 1 16:03:40 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Mon, 1 Dec 2025 16:03:40 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: <5HSynSVF8e5q3hAhVruyigrrDmFzIlkNVKuQwYl67r0=.e151612e-9c71-4a15-96bb-3fc5391438b6@github.com> On Mon, 1 Dec 2025 15:52:42 GMT, Chen Liang wrote: >> Nizar Benalla 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 17 additional commits since the last revision: >> >> - problem list failing test >> - Merge branch 'master' into start-of-release-27 >> - expand start of release documentation >> - Merge branch 'master' into start-of-release-27 >> - Changes required for hard 80 character line limit >> - Update --release 26 symbol information for JDK 26 build 25 >> The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ >> - revert MAX_COLUMNS to 80 >> - Update LATEST_MAJOR_VERSION in Versions.java >> - Merge branch 'master' into start-of-release-27 >> - Merge branch 'master' into start-of-release-27 >> - ... and 7 more: https://git.openjdk.org/jdk/compare/3c6406b2...e5214614 > > src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java line 382: > >> 380: * >> 381: * @see > 382: * href="https://docs.oracle.com/en/java/javase/26/docs/specs/jvms/index.html"> > > This change should be included in the codebase for JDK 26. You can create a new issue for this, and commit this change before this PR is integrated. Great idea Chen, I will open a PR for this today ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2577683094 From jnorlinder at openjdk.org Mon Dec 1 16:09:02 2025 From: jnorlinder at openjdk.org (Jonas Norlinder) Date: Mon, 1 Dec 2025 16:09:02 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v5] In-Reply-To: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: > Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. > > This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). > > Before patch: > > Benchmark Mode Cnt Score Error Units > CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op > CPUTime.execute:p0.00 sample 0.008 ms/op > CPUTime.execute:p0.50 sample 0.008 ms/op > CPUTime.execute:p0.90 sample 0.008 ms/op > CPUTime.execute:p0.95 sample 0.008 ms/op > CPUTime.execute:p0.99 sample 0.012 ms/op > CPUTime.execute:p0.999 sample 0.015 ms/op > CPUTime.execute:p0.9999 sample 0.021 ms/op > CPUTime.execute:p1.00 sample 1.030 ms/op > > > After patch: > > Benchmark Mode Cnt Score Error Units > CPUTime.execute sample 8984189 ? 10?? ms/op > CPUTime.execute:p0.00 sample ? 10?? ms/op > CPUTime.execute:p0.50 sample ? 10?? ms/op > CPUTime.execute:p0.90 sample ? 10?? ms/op > CPUTime.execute:p0.95 sample ? 10?? ms/op > CPUTime.execute:p0.99 sample 0.001 ms/op > CPUTime.execute:p0.999 sample 0.001 ms/op > CPUTime.execute:p0.9999 sample 0.006 ms/op > CPUTime.execute:p1.00 sample 0.054 ms/op > > > Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: Add fixes from @cl4es review comments ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28556/files - new: https://git.openjdk.org/jdk/pull/28556/files/a9628846..345ba380 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28556&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28556&range=03-04 Stats: 5 lines in 1 file changed: 0 ins; 0 del; 5 mod Patch: https://git.openjdk.org/jdk/pull/28556.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28556/head:pull/28556 PR: https://git.openjdk.org/jdk/pull/28556 From redestad at openjdk.org Mon Dec 1 16:13:38 2025 From: redestad at openjdk.org (Claes Redestad) Date: Mon, 1 Dec 2025 16:13:38 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v5] In-Reply-To: References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: On Mon, 1 Dec 2025 16:09:02 GMT, Jonas Norlinder wrote: >> Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. >> >> This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). >> >> Before patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op >> CPUTime.execute:p0.00 sample 0.008 ms/op >> CPUTime.execute:p0.50 sample 0.008 ms/op >> CPUTime.execute:p0.90 sample 0.008 ms/op >> CPUTime.execute:p0.95 sample 0.008 ms/op >> CPUTime.execute:p0.99 sample 0.012 ms/op >> CPUTime.execute:p0.999 sample 0.015 ms/op >> CPUTime.execute:p0.9999 sample 0.021 ms/op >> CPUTime.execute:p1.00 sample 1.030 ms/op >> >> >> After patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 8984189 ? 10?? ms/op >> CPUTime.execute:p0.00 sample ? 10?? ms/op >> CPUTime.execute:p0.50 sample ? 10?? ms/op >> CPUTime.execute:p0.90 sample ? 10?? ms/op >> CPUTime.execute:p0.95 sample ? 10?? ms/op >> CPUTime.execute:p0.99 sample 0.001 ms/op >> CPUTime.execute:p0.999 sample 0.001 ms/op >> CPUTime.execute:p0.9999 sample 0.006 ms/op >> CPUTime.execute:p1.00 sample 0.054 ms/op >> >> >> Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. > > Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: > > Add fixes from @cl4es review comments Microbenchmark looks good ------------- Marked as reviewed by redestad (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28556#pullrequestreview-3525830663 From coleenp at openjdk.org Mon Dec 1 16:33:40 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Mon, 1 Dec 2025 16:33:40 GMT Subject: RFR: 8370905: Update vm.defmeth tests to use virtual threads In-Reply-To: References: Message-ID: <5Kyr8K4_4bRh9Ob8QDoItE_gTQqYYy8gig_rAco_Ufo=.0185cd3f-0302-4b69-9292-e807eae2de6e@github.com> On Wed, 29 Oct 2025 18:54:09 GMT, Leonid Mesnik wrote: > The vm.defmeth stress tests should use > `TestThreadFactory.newThread()` > to start virtual threads if test thread factory is used. This seems quite reasonable. ------------- Marked as reviewed by coleenp (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28048#pullrequestreview-3525928981 From pchilanomate at openjdk.org Mon Dec 1 16:47:25 2025 From: pchilanomate at openjdk.org (Patricio Chilano Mateo) Date: Mon, 1 Dec 2025 16:47:25 GMT Subject: RFR: 8370905: Update vm.defmeth tests to use virtual threads In-Reply-To: References: Message-ID: On Wed, 29 Oct 2025 18:54:09 GMT, Leonid Mesnik wrote: > The vm.defmeth stress tests should use > `TestThreadFactory.newThread()` > to start virtual threads if test thread factory is used. Looks good to me. test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/StressTest.java line 98: > 96: this.rand = new Random(seed); > 97: this.thread = TestThreadFactory.newThread(this, id); > 98: thread.setName(id); Isn't this already set by `TestThreadFactory.newThread(this, id)`? ------------- Marked as reviewed by pchilanomate (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28048#pullrequestreview-3525996141 PR Review Comment: https://git.openjdk.org/jdk/pull/28048#discussion_r2577844273 From iris at openjdk.org Mon Dec 1 17:15:11 2025 From: iris at openjdk.org (Iris Clark) Date: Mon, 1 Dec 2025 17:15:11 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 08:53:37 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla 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 17 additional commits since the last revision: > > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - Merge branch 'master' into start-of-release-27 > - Changes required for hard 80 character line limit > - Update --release 26 symbol information for JDK 26 build 25 > The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ > - revert MAX_COLUMNS to 80 > - Update LATEST_MAJOR_VERSION in Versions.java > - Merge branch 'master' into start-of-release-27 > - Merge branch 'master' into start-of-release-27 > - ... and 7 more: https://git.openjdk.org/jdk/compare/3b597a10...e5214614 Marked as reviewed by iris (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3526121001 From liach at openjdk.org Mon Dec 1 18:27:34 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 1 Dec 2025 18:27:34 GMT Subject: RFR: 8372696: Allow boot classes to explicitly opt-in for final field trusting [v4] In-Reply-To: References: Message-ID: > Currently, the hotspot compiler (as in ciField) trusts final fields in hidden classes, record classes, and selected jdk packages. Some classes in the JDK wish to be trusted, but they cannot apply package-wide opt-in due to other legacy classes in the package, such as java.util. > > They currently can use `@Stable` as a workaround, but this is fragile because a stable final field may hold a trusted null, zero, or false value, which is currently treated as non-constant by ciField. > > We should add an annotation to opt-in for a whole class, mainly for legacy packages. This would benefit greatly some of our classes already using a lot of Stable, such as java.util.Optional, whose empty instance is now constant-foldable, as demonstrated in a new IR test. > > Paging @minborg who requested Optional folding for review. > > I think we can remove redundant Stable in a few other java.util classes after this patch is integrated. I plan to do that in subsequent patches. Chen Liang has updated the pull request incrementally with one additional commit since the last revision: bracket styles ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28540/files - new: https://git.openjdk.org/jdk/pull/28540/files/7a1cfa4a..d353bdbe Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28540&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28540&range=02-03 Stats: 3 lines in 1 file changed: 1 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/28540.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28540/head:pull/28540 PR: https://git.openjdk.org/jdk/pull/28540 From heidinga at openjdk.org Mon Dec 1 18:55:09 2025 From: heidinga at openjdk.org (Dan Heidinga) Date: Mon, 1 Dec 2025 18:55:09 GMT Subject: RFR: 8372696: Allow boot classes to explicitly opt-in for final field trusting [v4] In-Reply-To: References: Message-ID: <-9yglNAoD81NuGyLSS0ehpkPZmqK66Qyd7h4UFcztGA=.56a84f5e-a29a-4fc0-b0d7-ce20cac37851@github.com> On Mon, 1 Dec 2025 18:27:34 GMT, Chen Liang wrote: >> Currently, the hotspot compiler (as in ciField) trusts final fields in hidden classes, record classes, and selected jdk packages. Some classes in the JDK wish to be trusted, but they cannot apply package-wide opt-in due to other legacy classes in the package, such as java.util. >> >> They currently can use `@Stable` as a workaround, but this is fragile because a stable final field may hold a trusted null, zero, or false value, which is currently treated as non-constant by ciField. >> >> We should add an annotation to opt-in for a whole class, mainly for legacy packages. This would benefit greatly some of our classes already using a lot of Stable, such as java.util.Optional, whose empty instance is now constant-foldable, as demonstrated in a new IR test. >> >> Paging @minborg who requested Optional folding for review. >> >> I think we can remove redundant Stable in a few other java.util classes after this patch is integrated. I plan to do that in subsequent patches. > > Chen Liang has updated the pull request incrementally with one additional commit since the last revision: > > bracket styles A bit of meta-question about this PR and JEP 500: does this trust need to be rescinded if the user explicitly adds `--enable-final-field-mutation=` for the modules that contain these classes marked with the annotation? ------------- PR Comment: https://git.openjdk.org/jdk/pull/28540#issuecomment-3598347264 From fthevenet at openjdk.org Mon Dec 1 18:56:39 2025 From: fthevenet at openjdk.org (Frederic Thevenet) Date: Mon, 1 Dec 2025 18:56:39 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags Message-ID: This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. ------------- Commit messages: - Added a jtreg test - JDK-8372802: PrintFlagsFinal should also print locked flags Changes: https://git.openjdk.org/jdk/pull/28579/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28579&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8372802 Stats: 76 lines in 2 files changed: 75 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28579.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28579/head:pull/28579 PR: https://git.openjdk.org/jdk/pull/28579 From duke at openjdk.org Mon Dec 1 19:00:12 2025 From: duke at openjdk.org (Tres Finocchiaro) Date: Mon, 1 Dec 2025 19:00:12 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v6] In-Reply-To: References: Message-ID: On Thu, 25 Sep 2025 11:22:05 GMT, Sergey Chernyshev wrote: >> Hi all, >> >> I would like to propose a fix for JDK-8319589. This will allow jcmd and jps running as root to get the complete list of JVMs running by all users, and to attach from root to non-root JVMs. Previously, JDK-8197387 introduced the same possibility on Linux. >> >> This change affects macOS, that uses "secure" per-user temporary directories. It only affects JVMs running as root, the behavior in non-privileged JVMs remains unchanged. >> >> Jcmd and jps rely on LocalVmManager to get the initial list of the local VMs. The LocalVmManager uses sun.jvmstat.PlatformSupport to get the list of temp directories, where it searches for user's PerfData directory such as "hsperfdata_". In macosx the temp directories are per-user, the temp path is returned by confstr(_CS_DARWIN_USER_TEMP_DIR). The per-user directories are mode 700 and so they are read-protected from non-privileged users and can be accessed by the owner and the root. >> >> Both jps and jcmd (HotSpotAttachProvider) create MonitoredVm objects, that have PerfDataBuffer that performs attachment to the target. Only the attachable VMs are listed in jcmd output. >> >> The proposed patch changes the list of directories returned by the PlatformSupport#getTemporaryDirectories() in VMs running as root. The list is later used in VirtualMachineImpl (jdk.attach). It changes also the way mmap_attach_shared() searches for hsperfdata_/ files to map the shared memory. Mmap_attach_shared() and VirtualMachineImpl (via PlatformSupport) list the content of /var/folders, where the temp directories are located, more specificly the temp directories are /var/folders///T as hinted in [1]. The full list is returned by newly added PlatformSupportImpl#getTemporaryDirectories(). >> >> The attaching client's VirtualMachineImpl needs the target process's temp directory to find .java and create .attach files. It uses the list returned by PlatformSupportImpl#getTemporaryDirectories() and the ProcessHandle of the target process to search for user's PerfData directory, e.g. hsperfdata_, which is in the target process's temp directory, exactly where it expects to see the .java in return on sending SIGQUIT to the target VM. >> >> Mmap_attach_shared() traverses the /var/folders in get_user_tmp_dir() and looks for a hsperfdata_ folder. If that folder is found in /var/folders/*/*/T, that means the temp folder corresponds to the and to t... > > Sergey Chernyshev 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 seven additional commits since the last revision: > > - Merge branch 'master' into JDK-8319589 > - Removed unused native method > - addressed review comment #2 > - Apply suggestions from code review > > Co-authored-by: David Holmes <62092539+dholmes-ora at users.noreply.github.com> > - Update src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java > > Co-authored-by: Andrey Turbanov > - addressed review comments > - 8319589: Attach from root to a user java process not supported in Mac Someone please bump this. I don't have access to. ------------- PR Comment: https://git.openjdk.org/jdk/pull/25824#issuecomment-3598373427 From lmesnik at openjdk.org Mon Dec 1 19:25:19 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Mon, 1 Dec 2025 19:25:19 GMT Subject: RFR: 8370905: Update vm.defmeth tests to use virtual threads [v2] In-Reply-To: References: Message-ID: > The vm.defmeth stress tests should use > `TestThreadFactory.newThread()` > to start virtual threads if test thread factory is used. Leonid Mesnik 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: - removed setName - Merge branch 'master' of https://github.com/openjdk/jdk into 8370905 - 8370905: Update vm.defmeth tests to use virtual threads ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28048/files - new: https://git.openjdk.org/jdk/pull/28048/files/4d6d6786..cee025e5 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28048&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28048&range=00-01 Stats: 319462 lines in 2913 files changed: 206267 ins; 71095 del; 42100 mod Patch: https://git.openjdk.org/jdk/pull/28048.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28048/head:pull/28048 PR: https://git.openjdk.org/jdk/pull/28048 From lmesnik at openjdk.org Mon Dec 1 19:25:19 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Mon, 1 Dec 2025 19:25:19 GMT Subject: RFR: 8370905: Update vm.defmeth tests to use virtual threads [v2] In-Reply-To: References: Message-ID: <0sD6isw1Nacf_Bd_jhCJ47P0zePKtgEC6K79fiAj6jo=.43c8b3ea-e749-4c45-b937-3256d3e4f3cf@github.com> On Mon, 1 Dec 2025 19:22:11 GMT, Leonid Mesnik wrote: >> The vm.defmeth stress tests should use >> `TestThreadFactory.newThread()` >> to start virtual threads if test thread factory is used. > > Leonid Mesnik 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: > > - removed setName > - Merge branch 'master' of https://github.com/openjdk/jdk into 8370905 > - 8370905: Update vm.defmeth tests to use virtual threads Removed setName() ------------- PR Review: https://git.openjdk.org/jdk/pull/28048#pullrequestreview-3526136121 From lmesnik at openjdk.org Mon Dec 1 19:25:20 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Mon, 1 Dec 2025 19:25:20 GMT Subject: RFR: 8370905: Update vm.defmeth tests to use virtual threads [v2] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 16:43:59 GMT, Patricio Chilano Mateo wrote: >> Leonid Mesnik 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: >> >> - removed setName >> - Merge branch 'master' of https://github.com/openjdk/jdk into 8370905 >> - 8370905: Update vm.defmeth tests to use virtual threads > > test/hotspot/jtreg/vmTestbase/vm/runtime/defmeth/StressTest.java line 98: > >> 96: this.rand = new Random(seed); >> 97: this.thread = TestThreadFactory.newThread(this, id); >> 98: thread.setName(id); > > Isn't this already set by `TestThreadFactory.newThread(this, id)`? Thanks! ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28048#discussion_r2577952494 From lmesnik at openjdk.org Mon Dec 1 19:27:58 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Mon, 1 Dec 2025 19:27:58 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 14:56:54 GMT, Frederic Thevenet wrote: > This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` > > This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). > > Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. Marked as reviewed by lmesnik (Reviewer). test/hotspot/jtreg/runtime/CommandLine/PrintAllFlags.java line 30: > 28: * +UnlockDiagnosticVMOptions are set than when they aren't. > 29: * @requires vm.flagless > 30: * @modules java.base/jdk.internal.misc Is it needed? I don't see internal API usage. ------------- PR Review: https://git.openjdk.org/jdk/pull/28579#pullrequestreview-3526616134 PR Review Comment: https://git.openjdk.org/jdk/pull/28579#discussion_r2578333944 From darcy at openjdk.org Mon Dec 1 19:48:53 2025 From: darcy at openjdk.org (Joe Darcy) Date: Mon, 1 Dec 2025 19:48:53 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 08:53:37 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla 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 17 additional commits since the last revision: > > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - Merge branch 'master' into start-of-release-27 > - Changes required for hard 80 character line limit > - Update --release 26 symbol information for JDK 26 build 25 > The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ > - revert MAX_COLUMNS to 80 > - Update LATEST_MAJOR_VERSION in Versions.java > - Merge branch 'master' into start-of-release-27 > - Merge branch 'master' into start-of-release-27 > - ... and 7 more: https://git.openjdk.org/jdk/compare/bec8ec07...e5214614 src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java line 394: > 392: * > 393: * @see 394: * href="https://docs.oracle.com/en/java/javase/27/docs/specs/jvms/index.html"> Presumably the analagous URL update should be done here as in ClassFileFormatVersion for the JLS instead of the JVMS. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2578389248 From darcy at openjdk.org Mon Dec 1 19:52:54 2025 From: darcy at openjdk.org (Joe Darcy) Date: Mon, 1 Dec 2025 19:52:54 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: <9vzVbgAOcM7Svoy5DoqhDVY4Tn2bysq9WAYpMsBcenc=.441a1ba8-3e46-41d2-bf77-afb86fe8515c@github.com> On Mon, 1 Dec 2025 08:53:37 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla 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 17 additional commits since the last revision: > > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - Merge branch 'master' into start-of-release-27 > - Changes required for hard 80 character line limit > - Update --release 26 symbol information for JDK 26 build 25 > The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ > - revert MAX_COLUMNS to 80 > - Update LATEST_MAJOR_VERSION in Versions.java > - Merge branch 'master' into start-of-release-27 > - Merge branch 'master' into start-of-release-27 > - ... and 7 more: https://git.openjdk.org/jdk/compare/04b667ed...e5214614 src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java line 1368: > 1366: } > 1367: > 1368: private static String formatAbbreviatedList(Collection values) { I think changing the policy here is okay, but it should be better documented in comments here. Additionally, it assume there will be a dense collection of supported values between the 4 th and (n-3) rd. That is currently the de facto policy, but is not ironclad. This assumption should also be documented. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2578399308 From fthevenet at openjdk.org Mon Dec 1 20:18:48 2025 From: fthevenet at openjdk.org (Frederic Thevenet) Date: Mon, 1 Dec 2025 20:18:48 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 19:23:52 GMT, Leonid Mesnik wrote: >> This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` >> >> This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). >> >> Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. > > test/hotspot/jtreg/runtime/CommandLine/PrintAllFlags.java line 30: > >> 28: * +UnlockDiagnosticVMOptions are set than when they aren't. >> 29: * @requires vm.flagless >> 30: * @modules java.base/jdk.internal.misc > > Is it needed? I don't see internal API usage. You're right of course, it isn't needed. Thanks. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28579#discussion_r2578496052 From liach at openjdk.org Mon Dec 1 20:23:49 2025 From: liach at openjdk.org (Chen Liang) Date: Mon, 1 Dec 2025 20:23:49 GMT Subject: RFR: 8372696: Allow boot classes to explicitly opt-in for final field trusting [v4] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 18:27:34 GMT, Chen Liang wrote: >> Currently, the hotspot compiler (as in ciField) trusts final fields in hidden classes, record classes, and selected jdk packages. Some classes in the JDK wish to be trusted, but they cannot apply package-wide opt-in due to other legacy classes in the package, such as java.util. >> >> They currently can use `@Stable` as a workaround, but this is fragile because a stable final field may hold a trusted null, zero, or false value, which is currently treated as non-constant by ciField. >> >> We should add an annotation to opt-in for a whole class, mainly for legacy packages. This would benefit greatly some of our classes already using a lot of Stable, such as java.util.Optional, whose empty instance is now constant-foldable, as demonstrated in a new IR test. >> >> Paging @minborg who requested Optional folding for review. >> >> I think we can remove redundant Stable in a few other java.util classes after this patch is integrated. I plan to do that in subsequent patches. > > Chen Liang has updated the pull request incrementally with one additional commit since the last revision: > > bracket styles This PR currently does not interact with JEP 500. However, as specified in `Field.set`, the result of setting a final field may be ignored, as Alan [commented](https://github.com/openjdk/jdk/pull/28540#discussion_r2573494589). So I don't think we need to rescind the current trusting even if users enable mutations. In addition, @DanHeidinga I made the same fault as you when I first saw `--enable-final-field-mutation=` - this actually represents the callers, instead of the target, of `Field.set`. The target of mutation is specified via `--add-opens`, if the target field is not public. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28540#issuecomment-3598676839 From fthevenet at openjdk.org Mon Dec 1 20:24:06 2025 From: fthevenet at openjdk.org (Frederic Thevenet) Date: Mon, 1 Dec 2025 20:24:06 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags [v2] In-Reply-To: References: Message-ID: > This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` > > This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). > > Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. Frederic Thevenet has updated the pull request incrementally with one additional commit since the last revision: Removed unnecessary jdk.internal.misc module declaration ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28579/files - new: https://git.openjdk.org/jdk/pull/28579/files/96ce8390..6cdac8e1 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28579&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28579&range=00-01 Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28579.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28579/head:pull/28579 PR: https://git.openjdk.org/jdk/pull/28579 From mgronlun at openjdk.org Mon Dec 1 20:36:37 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Mon, 1 Dec 2025 20:36:37 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v8] In-Reply-To: References: Message-ID: > Greetings, > > this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. > > To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. > > Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. > > Testing: jdk_jfr, manual AOT verification, stress testing > > Thanks > Markus Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: GROUP BY definedClass is redundant ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28505/files - new: https://git.openjdk.org/jdk/pull/28505/files/ba54d2af..9782480e Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=07 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=06-07 Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28505.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28505/head:pull/28505 PR: https://git.openjdk.org/jdk/pull/28505 From mgronlun at openjdk.org Mon Dec 1 22:11:41 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Mon, 1 Dec 2025 22:11:41 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v9] In-Reply-To: References: Message-ID: > Greetings, > > this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. > > To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. > > Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. > > Testing: jdk_jfr, manual AOT verification, stress testing > > Thanks > Markus Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: Remove class definitions view in favor of jdk.ClassDefine event view ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28505/files - new: https://git.openjdk.org/jdk/pull/28505/files/9782480e..6a3a8c16 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=08 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=07-08 Stats: 8 lines in 1 file changed: 0 ins; 8 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/28505.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28505/head:pull/28505 PR: https://git.openjdk.org/jdk/pull/28505 From erikj at openjdk.org Mon Dec 1 22:24:07 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Mon, 1 Dec 2025 22:24:07 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 08:53:37 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla 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 17 additional commits since the last revision: > > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - Merge branch 'master' into start-of-release-27 > - Changes required for hard 80 character line limit > - Update --release 26 symbol information for JDK 26 build 25 > The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ > - revert MAX_COLUMNS to 80 > - Update LATEST_MAJOR_VERSION in Versions.java > - Merge branch 'master' into start-of-release-27 > - Merge branch 'master' into start-of-release-27 > - ... and 7 more: https://git.openjdk.org/jdk/compare/193bb114...e5214614 make/conf/version-numbers.conf line 40: > 38: DEFAULT_VERSION_CLASSFILE_MINOR=0 > 39: DEFAULT_VERSION_DOCS_API_SINCE=11 > 40: DEFAULT_ACCEPTABLE_BOOT_VERSIONS="25 26" Need to add 27 to this line. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2578923651 From vlivanov at openjdk.org Mon Dec 1 22:30:52 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Mon, 1 Dec 2025 22:30:52 GMT Subject: RFR: 8370905: Update vm.defmeth tests to use virtual threads [v2] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 19:25:19 GMT, Leonid Mesnik wrote: >> The vm.defmeth stress tests should use >> `TestThreadFactory.newThread()` >> to start virtual threads if test thread factory is used. > > Leonid Mesnik 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: > > - removed setName > - Merge branch 'master' of https://github.com/openjdk/jdk into 8370905 > - 8370905: Update vm.defmeth tests to use virtual threads Looks good. ------------- Marked as reviewed by vlivanov (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28048#pullrequestreview-3527313717 From mgronlun at openjdk.org Mon Dec 1 23:12:29 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Mon, 1 Dec 2025 23:12:29 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v10] In-Reply-To: References: Message-ID: > Greetings, > > this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. > > To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. > > Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. > > Testing: jdk_jfr, manual AOT verification, stress testing > > Thanks > Markus Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: correct trunctation ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28505/files - new: https://git.openjdk.org/jdk/pull/28505/files/6a3a8c16..b659a814 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=09 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=08-09 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28505.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28505/head:pull/28505 PR: https://git.openjdk.org/jdk/pull/28505 From dlsmith at openjdk.org Mon Dec 1 23:36:54 2025 From: dlsmith at openjdk.org (Dan Smith) Date: Mon, 1 Dec 2025 23:36:54 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: <5HSynSVF8e5q3hAhVruyigrrDmFzIlkNVKuQwYl67r0=.e151612e-9c71-4a15-96bb-3fc5391438b6@github.com> References: <5HSynSVF8e5q3hAhVruyigrrDmFzIlkNVKuQwYl67r0=.e151612e-9c71-4a15-96bb-3fc5391438b6@github.com> Message-ID: On Mon, 1 Dec 2025 15:58:38 GMT, Nizar Benalla wrote: >> src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java line 382: >> >>> 380: * >>> 381: * @see >> 382: * href="https://docs.oracle.com/en/java/javase/26/docs/specs/jvms/index.html"> >> >> This change should be included in the codebase for JDK 26. You can create a new issue for this, and commit this change before this PR is integrated. > > Great idea Chen, I will open a PR for this today Better to use a relative url now and stop bumping the version with each release: href="../../../../specs/jvms/index.html" (Check my work on the number of dots, may be one or two off.) ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2579082529 From darcy at openjdk.org Mon Dec 1 23:52:47 2025 From: darcy at openjdk.org (Joe Darcy) Date: Mon, 1 Dec 2025 23:52:47 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: <5HSynSVF8e5q3hAhVruyigrrDmFzIlkNVKuQwYl67r0=.e151612e-9c71-4a15-96bb-3fc5391438b6@github.com> Message-ID: On Mon, 1 Dec 2025 23:34:16 GMT, Dan Smith wrote: >> Great idea Chen, I will open a PR for this today > > Better to use a relative url now and stop bumping the version with each release: > > > href="../../../../specs/jvms/index.html" > > > (Check my work on the number of dots, may be one or two off.) I assume there is going to be some canonical publication of the JLS and JVMS specs per release. If so, these URLs should refer to that release. In JDK ($N+1) will will still want the links to JLS $N to resolve to JLS $N and _not_ JLS ($N + 1). ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2579106368 From dlsmith at openjdk.org Tue Dec 2 00:35:54 2025 From: dlsmith at openjdk.org (Dan Smith) Date: Tue, 2 Dec 2025 00:35:54 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: <5HSynSVF8e5q3hAhVruyigrrDmFzIlkNVKuQwYl67r0=.e151612e-9c71-4a15-96bb-3fc5391438b6@github.com> Message-ID: On Mon, 1 Dec 2025 23:50:29 GMT, Joe Darcy wrote: >> Better to use a relative url now and stop bumping the version with each release: >> >> >> href="../../../../specs/jvms/index.html" >> >> >> (Check my work on the number of dots, may be one or two off.) > > I assume there is going to be some canonical publication of the JLS and JVMS specs per release. If so, these URLs should refer to that release. In JDK ($N+1) will will still want the links to JLS $N to resolve to JLS $N and _not_ JLS ($N + 1). Oh, yes, thanks Joe, I'd missed that context. If the goal is to have a stable URL that will always point to the snapshot for a given version, yes, you want the full URL, and this updated URL looks like the correct one. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2579166554 From duke at openjdk.org Tue Dec 2 00:55:59 2025 From: duke at openjdk.org (Larry Cable) Date: Tue, 2 Dec 2025 00:55:59 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v6] In-Reply-To: References: Message-ID: On Thu, 25 Sep 2025 11:22:05 GMT, Sergey Chernyshev wrote: >> Hi all, >> >> I would like to propose a fix for JDK-8319589. This will allow jcmd and jps running as root to get the complete list of JVMs running by all users, and to attach from root to non-root JVMs. Previously, JDK-8197387 introduced the same possibility on Linux. >> >> This change affects macOS, that uses "secure" per-user temporary directories. It only affects JVMs running as root, the behavior in non-privileged JVMs remains unchanged. >> >> Jcmd and jps rely on LocalVmManager to get the initial list of the local VMs. The LocalVmManager uses sun.jvmstat.PlatformSupport to get the list of temp directories, where it searches for user's PerfData directory such as "hsperfdata_". In macosx the temp directories are per-user, the temp path is returned by confstr(_CS_DARWIN_USER_TEMP_DIR). The per-user directories are mode 700 and so they are read-protected from non-privileged users and can be accessed by the owner and the root. >> >> Both jps and jcmd (HotSpotAttachProvider) create MonitoredVm objects, that have PerfDataBuffer that performs attachment to the target. Only the attachable VMs are listed in jcmd output. >> >> The proposed patch changes the list of directories returned by the PlatformSupport#getTemporaryDirectories() in VMs running as root. The list is later used in VirtualMachineImpl (jdk.attach). It changes also the way mmap_attach_shared() searches for hsperfdata_/ files to map the shared memory. Mmap_attach_shared() and VirtualMachineImpl (via PlatformSupport) list the content of /var/folders, where the temp directories are located, more specificly the temp directories are /var/folders///T as hinted in [1]. The full list is returned by newly added PlatformSupportImpl#getTemporaryDirectories(). >> >> The attaching client's VirtualMachineImpl needs the target process's temp directory to find .java and create .attach files. It uses the list returned by PlatformSupportImpl#getTemporaryDirectories() and the ProcessHandle of the target process to search for user's PerfData directory, e.g. hsperfdata_, which is in the target process's temp directory, exactly where it expects to see the .java in return on sending SIGQUIT to the target VM. >> >> Mmap_attach_shared() traverses the /var/folders in get_user_tmp_dir() and looks for a hsperfdata_ folder. If that folder is found in /var/folders/*/*/T, that means the temp folder corresponds to the and to t... > > Sergey Chernyshev 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 seven additional commits since the last revision: > > - Merge branch 'master' into JDK-8319589 > - Removed unused native method > - addressed review comment #2 > - Apply suggestions from code review > > Co-authored-by: David Holmes <62092539+dholmes-ora at users.noreply.github.com> > - Update src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java > > Co-authored-by: Andrey Turbanov > - addressed review comments > - 8319589: Attach from root to a user java process not supported in Mac we need someone with reviewer status to approve this for integration ------------- PR Comment: https://git.openjdk.org/jdk/pull/25824#issuecomment-3599624713 From vlivanov at openjdk.org Tue Dec 2 02:26:46 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 02:26:46 GMT Subject: RFR: 8372845: Fold identity hash code if object is constant In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 23:01:08 GMT, Chen Liang wrote: > Folding identity hash as constant if the incoming argument is constant would be useful for quick map lookups, such as for the [Classifier proposal](https://openjdk.org/jeps/8357674). Currently, identity hash is not constant because it loads the object header/mark word. We can add an explicit bypass to load an existing hash eagerly instead. @liach Thanks for taking care of the fix. Here's a more polished version: https://github.com/openjdk/jdk/commit/c6c4e9f23a1bdf801d0cc8e36f343543b8bfccda ------------- PR Comment: https://git.openjdk.org/jdk/pull/28589#issuecomment-3599884931 From liach at openjdk.org Tue Dec 2 02:52:50 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 02:52:50 GMT Subject: RFR: 8372845: Fold identity hash code if object is constant In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 23:01:08 GMT, Chen Liang wrote: > Folding identity hash as constant if the incoming argument is constant would be useful for quick map lookups, such as for the [Classifier proposal](https://openjdk.org/jeps/8357674). Currently, identity hash is not constant because it loads the object header/mark word. We can add an explicit bypass to load an existing hash eagerly instead. I have one question: would it be safer for us to move the constant detection after generate_virtual_guard in the `is_virtual` if block? I think it may be possible for users to create a `Object::hashCode` site with a constant receiver that is of a specialized class that overrides `hashCode`. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28589#issuecomment-3599934103 From thartmann at openjdk.org Tue Dec 2 06:44:49 2025 From: thartmann at openjdk.org (Tobias Hartmann) Date: Tue, 2 Dec 2025 06:44:49 GMT Subject: RFR: 8372845: Fold identity hash code if object is constant In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 02:49:52 GMT, Chen Liang wrote: > I think it may be possible for users to create a Object::hashCode site with a constant receiver that is of a specialized class that overrides hashCode. Yes, I think so too. We need a test for this scenario. Just an observation: This patch will only allow folding during parsing. I would expect that often, opportunities only arise after other optimizations already took place. For example, something like this would not be optimized if we run with `-XX:+AlwaysIncrementalInline`, right? static final Object a = new Object(); @ForceInline public Object getter(Object obj) { return obj; } public long test() { return getter(a).hashCode(); } Another example: Object val = new Object(); int limit = 2; for (; limit < 4; limit *= 2); for (int i = 2; i < limit; i++) { val = a; } return val.hashCode(); // After loop opts, C2 knows that val == a So ideally, we would move this optimization to IGVN. This would also help Valhalla, where we need to (re-)compute the hashcode for a scalarized value object and would therefore like to fold the computation as aggressively as possible. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28589#issuecomment-3600438904 From dholmes at openjdk.org Tue Dec 2 09:18:10 2025 From: dholmes at openjdk.org (David Holmes) Date: Tue, 2 Dec 2025 09:18:10 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v3] In-Reply-To: References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: On Mon, 1 Dec 2025 11:42:45 GMT, Jonas Norlinder wrote: >> src/hotspot/os/linux/os_linux.cpp line 4968: >> >>> 4966: // POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. >>> 4967: static clockid_t get_thread_clockid(Thread* thread, bool total, bool* success) { >>> 4968: constexpr clockid_t CLOCK_TYPE_MASK = 3; >> >> Shouldn't the mask be covering 3-bits? > > No we should not touch bit 3 which encodes if the clock is for a thread of process. See here https://elixir.bootlin.com/linux/v6.17.9/source/include/linux/posix-timers_types.h#L9-L19. Okay so > encoding the clock types in the last three bits needs a bit more explanation. >> src/hotspot/os/linux/os_linux.cpp line 4979: >> >>> 4977: // to detach itself from the VM - which should result in ESRCH. >>> 4978: assert_status(rc == ESRCH, rc, "pthread_getcpuclockid failed"); >>> 4979: *success = false; >> >> The normal way I've seen this pattern used is to set it to true rather than assuming it was true to begin with. > > Using a positive outcome like success to encode the outcome make it possible to return like so `return success ? os::Linux::thread_cpu_time(clockid) : -1;`. I prefer having the `-1` at the end as I find this reads easier. If we encode a failure we would need to write `return !failure ? os::Linux::thread_cpu_time(clockid) : -1;`. Hence, I would prefer keeping this as is as double-negatives may be harder to parse. Okay but you are setting up a usage requirement without documenting anywhere that that requirement exists. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28556#discussion_r2580306175 PR Review Comment: https://git.openjdk.org/jdk/pull/28556#discussion_r2580309226 From dholmes at openjdk.org Tue Dec 2 09:30:03 2025 From: dholmes at openjdk.org (David Holmes) Date: Tue, 2 Dec 2025 09:30:03 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v5] In-Reply-To: References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: On Mon, 1 Dec 2025 16:09:02 GMT, Jonas Norlinder wrote: >> Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. >> >> This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). >> >> Before patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op >> CPUTime.execute:p0.00 sample 0.008 ms/op >> CPUTime.execute:p0.50 sample 0.008 ms/op >> CPUTime.execute:p0.90 sample 0.008 ms/op >> CPUTime.execute:p0.95 sample 0.008 ms/op >> CPUTime.execute:p0.99 sample 0.012 ms/op >> CPUTime.execute:p0.999 sample 0.015 ms/op >> CPUTime.execute:p0.9999 sample 0.021 ms/op >> CPUTime.execute:p1.00 sample 1.030 ms/op >> >> >> After patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 8984189 ? 10?? ms/op >> CPUTime.execute:p0.00 sample ? 10?? ms/op >> CPUTime.execute:p0.50 sample ? 10?? ms/op >> CPUTime.execute:p0.90 sample ? 10?? ms/op >> CPUTime.execute:p0.95 sample ? 10?? ms/op >> CPUTime.execute:p0.99 sample 0.001 ms/op >> CPUTime.execute:p0.999 sample 0.001 ms/op >> CPUTime.execute:p0.9999 sample 0.006 ms/op >> CPUTime.execute:p1.00 sample 0.054 ms/op >> >> >> Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. > > Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: > > Add fixes from @cl4es review comments src/hotspot/os/linux/os_linux.cpp line 4966: > 4964: // for the Linux kernel defaults to construct a clockid with 010 (CPUCLOCK_SCHED) > 4965: // set, which return system+user time, which is what the POSIX standard mandates, see > 4966: // POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. I think the bit encoding could be made somewhat clearer. // Since kernel v2.6.12 the Linux ABI has had support for encoding the clock types in // the last three bits. Bit 2 indicates whether a cpu clock refers to a thread or a process. // Bits 1 and 0 give the type: PROF=0, VIRT=1, SCHED=2, or FD=3. // The clock CPUCLOCK_VIRT (0b001) reports the thread's consumed user time. // POSIX compliant implementations of pthread_getcpuclockid return the clock CPUCLOCK_SCHED // (0b010) which reports the thread's consumed system+user time (as mandated by the POSIX // standard POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90) src/hotspot/os/linux/os_linux.cpp line 4967: > 4965: // set, which return system+user time, which is what the POSIX standard mandates, see > 4966: // POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. > 4967: static clockid_t get_thread_clockid(Thread* thread, bool total, bool* success) { Suggestion: // The out parameter `success` is required to be initialized to `true`. static clockid_t get_thread_clockid(Thread* thread, bool total, bool* success) { assert(success != nullptr && *success, "incorrect initialization"); ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28556#discussion_r2580342601 PR Review Comment: https://git.openjdk.org/jdk/pull/28556#discussion_r2580349403 From dholmes at openjdk.org Tue Dec 2 09:39:20 2025 From: dholmes at openjdk.org (David Holmes) Date: Tue, 2 Dec 2025 09:39:20 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags [v2] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 20:24:06 GMT, Frederic Thevenet wrote: >> This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` >> >> This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). >> >> Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. > > Frederic Thevenet has updated the pull request incrementally with one additional commit since the last revision: > > Removed unnecessary jdk.internal.misc module declaration I think this seems reasonable. Have you run all of the tests that use this flag to check that the extra output does not cause any problems (e.g. if jtreg elides sections of the log because it is too long now)? ------------- Marked as reviewed by dholmes (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28579#pullrequestreview-3529140282 From dholmes at openjdk.org Tue Dec 2 09:45:52 2025 From: dholmes at openjdk.org (David Holmes) Date: Tue, 2 Dec 2025 09:45:52 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v6] In-Reply-To: References: Message-ID: <2Pa32ipOuPa9thyQvPlXQ5AZi34kbxs_SPGlivudyA8=.865ecd6f-891b-49a4-b472-2f663e186e58@github.com> On Wed, 29 Oct 2025 23:29:23 GMT, Serguei Spitsyn wrote: >> @sercher Okay, will take a look but I'm busy with other things at the moment, so it will take time. Also, I'm also not a Mac OS expert. > >> @sspitsyn and @sercher I'll take a look since I familiar with the code and the platform... > > Okay. Thank you, Larry! We need two reviewers. It doesn't look like @sspitsyn got to this and I am unsure what @larry-cable 's view is. The PR also needs to be refreshed as so much time has passed. ------------- PR Comment: https://git.openjdk.org/jdk/pull/25824#issuecomment-3601126930 From aartemov at openjdk.org Tue Dec 2 10:28:16 2025 From: aartemov at openjdk.org (Anton Artemov) Date: Tue, 2 Dec 2025 10:28:16 GMT Subject: RFR: 8366659: ObjectMonitor::wait() can deadlock with a suspension request [v19] In-Reply-To: References: Message-ID: > Hi, please consider the following changes: > > If suspension is allowed when a thread is re-entering an object monitor (OM), then a deadlock is possible: > > The waiting thread is made to be a successor and is unparked. Upon a suspension request, the thread will suspend itself whilst clearing the successor. The OM will be left unlocked (not grabbed by any thread), while the other threads are parked until a thread grabs the OM and the exits it. The suspended thread is on the entry-list and can be selected as a successor again. None of other threads can be woken up to grab the OM until the suspended thread has been resumed and successfully releases the OM. > > This can happen in two places where the successor could be suspended: > 1: > https://github.com/openjdk/jdk/blob/6322aaba63b235cb6c73d23a932210af318404ec/src/hotspot/share/runtime/objectMonitor.cpp#L1897 > > 2: > https://github.com/openjdk/jdk/blob/6322aaba63b235cb6c73d23a932210af318404ec/src/hotspot/share/runtime/objectMonitor.cpp#L1149 > > The issues are addressed by not allowing suspension in case 1, and by handling the suspension request at a later stage, after the thread has grabbed the OM in `reenter_internal()` in case 2. In case of a suspension request, the thread exits the OM and enters it again once resumed. > > The JVMTI `waited` event posting (2nd one) is postponed until the suspended thread is resumed and has entered the OM again. The `enter` to the OM (in case `ExitOnSuspend` did exit) is done without posting any events. > > Tests are added for both scenarios. > > Tested in tiers 1 - 7. Anton Artemov has updated the pull request incrementally with one additional commit since the last revision: 8366659: Fixed semi-broken tests ------------- Changes: - all: https://git.openjdk.org/jdk/pull/27040/files - new: https://git.openjdk.org/jdk/pull/27040/files/8283d9c0..d45fc76b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=27040&range=18 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=27040&range=17-18 Stats: 58 lines in 4 files changed: 49 ins; 0 del; 9 mod Patch: https://git.openjdk.org/jdk/pull/27040.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/27040/head:pull/27040 PR: https://git.openjdk.org/jdk/pull/27040 From ayang at openjdk.org Tue Dec 2 12:08:52 2025 From: ayang at openjdk.org (Albert Mingkun Yang) Date: Tue, 2 Dec 2025 12:08:52 GMT Subject: RFR: 8372755: Remove local suppression of VS C4146 warnings In-Reply-To: References: Message-ID: On Sat, 29 Nov 2025 10:20:50 GMT, Kim Barrett wrote: > Please review this trivial change to remove unnecessary local Visual Studio > warning suppressions for C4146 in HotSpot code. JDK-8254072 intentionally > globally suppressed that warning when building HotSpot, so local suppression > is no longer needed. > > Testing: mach5 tier1 Trivial. ------------- Marked as reviewed by ayang (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28564#pullrequestreview-3529742316 From aboldtch at openjdk.org Tue Dec 2 13:09:22 2025 From: aboldtch at openjdk.org (Axel Boldt-Christmas) Date: Tue, 2 Dec 2025 13:09:22 GMT Subject: RFR: 8372571: ResourceHashTable for some AOT data structures miss placement operator when allocating In-Reply-To: References: Message-ID: On Wed, 26 Nov 2025 15:41:25 GMT, Thomas Schatzl wrote: > Hi all, > > please review this cleanup adding two missing placement operators when allocating `ResizeableHashTable`s during AOT dumping. Both table instances are clearly meant to be accessible as they are assigned to static members and accessed outside of the method creating them. > > There is no problematic `ResourceMark` though, so there should be no current impact. > > Testing: gha > > Thanks, > Thomas lgtm. ------------- Marked as reviewed by aboldtch (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28510#pullrequestreview-3530014324 From ayang at openjdk.org Tue Dec 2 13:09:33 2025 From: ayang at openjdk.org (Albert Mingkun Yang) Date: Tue, 2 Dec 2025 13:09:33 GMT Subject: RFR: 8371587: Final mapping lost in ProcSmapsParser::parse_next [v3] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 14:35:42 GMT, Albert Mingkun Yang wrote: >> A simple fix for off-by-one error in parsing `smaps` -- the final mapping is never recorded as we exits the parsing loop too early. >> >> The spec of `parse_next` is updated to reflects what its caller expects. The newly added gtest fails without this path. >> >> >> Test: tier1 > > Albert Mingkun Yang 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 'master' into smap-parser > - review > - copyright-header > - review > - Merge branch 'master' into smap-parser > - smap-parser Thanks for review. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28225#issuecomment-3601938896 From ayang at openjdk.org Tue Dec 2 13:09:35 2025 From: ayang at openjdk.org (Albert Mingkun Yang) Date: Tue, 2 Dec 2025 13:09:35 GMT Subject: Integrated: 8371587: Final mapping lost in ProcSmapsParser::parse_next In-Reply-To: References: Message-ID: <6PecK0y7kvW9JX5pOGBT1f1XJhT9MFZKZG-xN5rLBPc=.110c12d0-2a51-4b0f-90bc-14f5cfb73940@github.com> On Mon, 10 Nov 2025 21:18:23 GMT, Albert Mingkun Yang wrote: > A simple fix for off-by-one error in parsing `smaps` -- the final mapping is never recorded as we exits the parsing loop too early. > > The spec of `parse_next` is updated to reflects what its caller expects. The newly added gtest fails without this path. > > > Test: tier1 This pull request has now been integrated. Changeset: eecba58c Author: Albert Mingkun Yang URL: https://git.openjdk.org/jdk/commit/eecba58c6817dbac129c545604d6286dfdcf951f Stats: 131 lines in 3 files changed: 117 ins; 6 del; 8 mod 8371587: Final mapping lost in ProcSmapsParser::parse_next Reviewed-by: jsjolen, fandreuzzi ------------- PR: https://git.openjdk.org/jdk/pull/28225 From jnorlinder at openjdk.org Tue Dec 2 13:10:35 2025 From: jnorlinder at openjdk.org (Jonas Norlinder) Date: Tue, 2 Dec 2025 13:10:35 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v6] In-Reply-To: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: > Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. > > This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). > > Before patch: > > Benchmark Mode Cnt Score Error Units > CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op > CPUTime.execute:p0.00 sample 0.008 ms/op > CPUTime.execute:p0.50 sample 0.008 ms/op > CPUTime.execute:p0.90 sample 0.008 ms/op > CPUTime.execute:p0.95 sample 0.008 ms/op > CPUTime.execute:p0.99 sample 0.012 ms/op > CPUTime.execute:p0.999 sample 0.015 ms/op > CPUTime.execute:p0.9999 sample 0.021 ms/op > CPUTime.execute:p1.00 sample 1.030 ms/op > > > After patch: > > Benchmark Mode Cnt Score Error Units > CPUTime.execute sample 8984189 ? 10?? ms/op > CPUTime.execute:p0.00 sample ? 10?? ms/op > CPUTime.execute:p0.50 sample ? 10?? ms/op > CPUTime.execute:p0.90 sample ? 10?? ms/op > CPUTime.execute:p0.95 sample ? 10?? ms/op > CPUTime.execute:p0.99 sample 0.001 ms/op > CPUTime.execute:p0.999 sample 0.001 ms/op > CPUTime.execute:p0.9999 sample 0.006 ms/op > CPUTime.execute:p1.00 sample 0.054 ms/op > > > Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: Add fixes for @dholmes-ora review ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28556/files - new: https://git.openjdk.org/jdk/pull/28556/files/345ba380..902b7787 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28556&range=05 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28556&range=04-05 Stats: 10 lines in 1 file changed: 4 ins; 0 del; 6 mod Patch: https://git.openjdk.org/jdk/pull/28556.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28556/head:pull/28556 PR: https://git.openjdk.org/jdk/pull/28556 From jsjolen at openjdk.org Tue Dec 2 13:46:02 2025 From: jsjolen at openjdk.org (Johan =?UTF-8?B?U2rDtmxlbg==?=) Date: Tue, 2 Dec 2025 13:46:02 GMT Subject: RFR: 8372571: ResourceHashTable for some AOT data structures miss placement operator when allocating In-Reply-To: References: Message-ID: On Wed, 26 Nov 2025 15:41:25 GMT, Thomas Schatzl wrote: > Hi all, > > please review this cleanup adding two missing placement operators when allocating `ResizeableHashTable`s during AOT dumping. Both table instances are clearly meant to be accessible as they are assigned to static members and accessed outside of the method creating them. > > There is no problematic `ResourceMark` though, so there should be no current impact. > > Testing: gha > > Thanks, > Thomas Marked as reviewed by jsjolen (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28510#pullrequestreview-3530216802 From kbarrett at openjdk.org Tue Dec 2 13:58:52 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Tue, 2 Dec 2025 13:58:52 GMT Subject: RFR: 8372755: Remove local suppression of VS C4146 warnings In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 12:05:56 GMT, Albert Mingkun Yang wrote: >> Please review this trivial change to remove unnecessary local Visual Studio >> warning suppressions for C4146 in HotSpot code. JDK-8254072 intentionally >> globally suppressed that warning when building HotSpot, so local suppression >> is no longer needed. >> >> Testing: mach5 tier1 > > Trivial. Thanks for reviewing @albertnetymk . ------------- PR Comment: https://git.openjdk.org/jdk/pull/28564#issuecomment-3602193658 From kbarrett at openjdk.org Tue Dec 2 13:58:54 2025 From: kbarrett at openjdk.org (Kim Barrett) Date: Tue, 2 Dec 2025 13:58:54 GMT Subject: Integrated: 8372755: Remove local suppression of VS C4146 warnings In-Reply-To: References: Message-ID: On Sat, 29 Nov 2025 10:20:50 GMT, Kim Barrett wrote: > Please review this trivial change to remove unnecessary local Visual Studio > warning suppressions for C4146 in HotSpot code. JDK-8254072 intentionally > globally suppressed that warning when building HotSpot, so local suppression > is no longer needed. > > Testing: mach5 tier1 This pull request has now been integrated. Changeset: 6f2169ff Author: Kim Barrett URL: https://git.openjdk.org/jdk/commit/6f2169ff6996e0629ce80455959a21947fd5de2c Stats: 5 lines in 2 files changed: 0 ins; 4 del; 1 mod 8372755: Remove local suppression of VS C4146 warnings Reviewed-by: ayang ------------- PR: https://git.openjdk.org/jdk/pull/28564 From nbenalla at openjdk.org Tue Dec 2 14:57:43 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Tue, 2 Dec 2025 14:57:43 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v8] In-Reply-To: References: Message-ID: <8Fxjqxz7uHKELjvLEjJg4Zvkbs38Bz52UcbJJYkkN4I=.09b0c42a-4b86-4ba9-9a31-d0a7b60af3fe@github.com> > Get JDK 27 underway. Nizar Benalla 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 18 additional commits since the last revision: - Merge branch 'master' into start-of-release-27 - problem list failing test - Merge branch 'master' into start-of-release-27 - expand start of release documentation - Merge branch 'master' into start-of-release-27 - Changes required for hard 80 character line limit - Update --release 26 symbol information for JDK 26 build 25 The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ - revert MAX_COLUMNS to 80 - Update LATEST_MAJOR_VERSION in Versions.java - Merge branch 'master' into start-of-release-27 - ... and 8 more: https://git.openjdk.org/jdk/compare/759d7098...b47b9ee9 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/e5214614..b47b9ee9 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=07 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=06-07 Stats: 7726 lines in 83 files changed: 2728 ins; 4423 del; 575 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From nbenalla at openjdk.org Tue Dec 2 15:07:11 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Tue, 2 Dec 2025 15:07:11 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: References: Message-ID: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> > Get JDK 27 underway. Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: - revert changes to avoid conflict - add 27 to the acceptable boot versions ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/b47b9ee9..1237304b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=08 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=07-08 Stats: 49 lines in 4 files changed: 8 ins; 29 del; 12 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From nbenalla at openjdk.org Tue Dec 2 15:07:16 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Tue, 2 Dec 2025 15:07:16 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 22:20:34 GMT, Erik Joelsson wrote: >> Nizar Benalla 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 17 additional commits since the last revision: >> >> - problem list failing test >> - Merge branch 'master' into start-of-release-27 >> - expand start of release documentation >> - Merge branch 'master' into start-of-release-27 >> - Changes required for hard 80 character line limit >> - Update --release 26 symbol information for JDK 26 build 25 >> The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ >> - revert MAX_COLUMNS to 80 >> - Update LATEST_MAJOR_VERSION in Versions.java >> - Merge branch 'master' into start-of-release-27 >> - Merge branch 'master' into start-of-release-27 >> - ... and 7 more: https://git.openjdk.org/jdk/compare/8736a894...e5214614 > > make/conf/version-numbers.conf line 40: > >> 38: DEFAULT_VERSION_CLASSFILE_MINOR=0 >> 39: DEFAULT_VERSION_DOCS_API_SINCE=11 >> 40: DEFAULT_ACCEPTABLE_BOOT_VERSIONS="25 26" > > Need to add 27 to this line. Fixed in https://github.com/openjdk/jdk/pull/28130/commits/061986c2fa56bcf1411f479c5b76602f63dc93c3, thanks! ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2581577462 From stuefe at openjdk.org Tue Dec 2 15:08:47 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Tue, 2 Dec 2025 15:08:47 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v3] In-Reply-To: References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: <3N2-47etRsWRrfCcYo_ul4UMhXu4Z9Y_yyx1uUgqcaM=.82d606c7-05b4-4879-8ae5-f8305be8a334@github.com> On Tue, 2 Dec 2025 09:15:31 GMT, David Holmes wrote: >> Using a positive outcome like success to encode the outcome make it possible to return like so `return success ? os::Linux::thread_cpu_time(clockid) : -1;`. I prefer having the `-1` at the end as I find this reads easier. If we encode a failure we would need to write `return !failure ? os::Linux::thread_cpu_time(clockid) : -1;`. Hence, I would prefer keeping this as is as double-negatives may be harder to parse. > > Okay but you are setting up a usage requirement without documenting anywhere that that requirement exists. I would prefer if we kept using the standard. When in Rome... What we often do is this: bool get_thread_clockid(Thread* thread, bool total, clock_id_t* is); or, alternatively, what David wrote. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28556#discussion_r2581600332 From schernyshev at openjdk.org Tue Dec 2 15:46:10 2025 From: schernyshev at openjdk.org (Sergey Chernyshev) Date: Tue, 2 Dec 2025 15:46:10 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v7] In-Reply-To: References: Message-ID: > Hi all, > > I would like to propose a fix for JDK-8319589. This will allow jcmd and jps running as root to get the complete list of JVMs running by all users, and to attach from root to non-root JVMs. Previously, JDK-8197387 introduced the same possibility on Linux. > > This change affects macOS, that uses "secure" per-user temporary directories. It only affects JVMs running as root, the behavior in non-privileged JVMs remains unchanged. > > Jcmd and jps rely on LocalVmManager to get the initial list of the local VMs. The LocalVmManager uses sun.jvmstat.PlatformSupport to get the list of temp directories, where it searches for user's PerfData directory such as "hsperfdata_". In macosx the temp directories are per-user, the temp path is returned by confstr(_CS_DARWIN_USER_TEMP_DIR). The per-user directories are mode 700 and so they are read-protected from non-privileged users and can be accessed by the owner and the root. > > Both jps and jcmd (HotSpotAttachProvider) create MonitoredVm objects, that have PerfDataBuffer that performs attachment to the target. Only the attachable VMs are listed in jcmd output. > > The proposed patch changes the list of directories returned by the PlatformSupport#getTemporaryDirectories() in VMs running as root. The list is later used in VirtualMachineImpl (jdk.attach). It changes also the way mmap_attach_shared() searches for hsperfdata_/ files to map the shared memory. Mmap_attach_shared() and VirtualMachineImpl (via PlatformSupport) list the content of /var/folders, where the temp directories are located, more specificly the temp directories are /var/folders///T as hinted in [1]. The full list is returned by newly added PlatformSupportImpl#getTemporaryDirectories(). > > The attaching client's VirtualMachineImpl needs the target process's temp directory to find .java and create .attach files. It uses the list returned by PlatformSupportImpl#getTemporaryDirectories() and the ProcessHandle of the target process to search for user's PerfData directory, e.g. hsperfdata_, which is in the target process's temp directory, exactly where it expects to see the .java in return on sending SIGQUIT to the target VM. > > Mmap_attach_shared() traverses the /var/folders in get_user_tmp_dir() and looks for a hsperfdata_ folder. If that folder is found in /var/folders/*/*/T, that means the temp folder corresponds to the and to the JVM being attached to. > > The... Sergey Chernyshev 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 eight additional commits since the last revision: - Merge branch 'master' into JDK-8319589 - Merge branch 'master' into JDK-8319589 - Removed unused native method - addressed review comment #2 - Apply suggestions from code review Co-authored-by: David Holmes <62092539+dholmes-ora at users.noreply.github.com> - Update src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java Co-authored-by: Andrey Turbanov - addressed review comments - 8319589: Attach from root to a user java process not supported in Mac ------------- Changes: - all: https://git.openjdk.org/jdk/pull/25824/files - new: https://git.openjdk.org/jdk/pull/25824/files/75dd6fb8..8118017f Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=25824&range=06 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25824&range=05-06 Stats: 391287 lines in 4297 files changed: 249688 ins; 89814 del; 51785 mod Patch: https://git.openjdk.org/jdk/pull/25824.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/25824/head:pull/25824 PR: https://git.openjdk.org/jdk/pull/25824 From mgronlun at openjdk.org Tue Dec 2 15:59:00 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Tue, 2 Dec 2025 15:59:00 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v11] In-Reply-To: References: Message-ID: > Greetings, > > this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. > > To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. > > Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. > > Testing: jdk_jfr, manual AOT verification, stress testing > > Thanks > Markus Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: fixes ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28505/files - new: https://git.openjdk.org/jdk/pull/28505/files/b659a814..66e63a40 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=10 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=09-10 Stats: 10 lines in 2 files changed: 0 ins; 8 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/28505.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28505/head:pull/28505 PR: https://git.openjdk.org/jdk/pull/28505 From mgronlun at openjdk.org Tue Dec 2 16:11:17 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Tue, 2 Dec 2025 16:11:17 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v12] In-Reply-To: References: Message-ID: > Greetings, > > this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. > > To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. > > Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. > > Testing: jdk_jfr, manual AOT verification, stress testing > > Thanks > Markus Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: restore longest-class-loading view ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28505/files - new: https://git.openjdk.org/jdk/pull/28505/files/66e63a40..3a44c10e Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=11 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=10-11 Stats: 6 lines in 1 file changed: 0 ins; 3 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/28505.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28505/head:pull/28505 PR: https://git.openjdk.org/jdk/pull/28505 From kvn at openjdk.org Tue Dec 2 16:46:00 2025 From: kvn at openjdk.org (Vladimir Kozlov) Date: Tue, 2 Dec 2025 16:46:00 GMT Subject: RFR: 8372571: ResourceHashTable for some AOT data structures miss placement operator when allocating In-Reply-To: References: Message-ID: On Wed, 26 Nov 2025 15:41:25 GMT, Thomas Schatzl wrote: > Hi all, > > please review this cleanup adding two missing placement operators when allocating `ResizeableHashTable`s during AOT dumping. Both table instances are clearly meant to be accessible as they are assigned to static members and accessed outside of the method creating them. > > There is no problematic `ResourceMark` though, so there should be no current impact. > > Testing: gha > > Thanks, > Thomas Good. ------------- Marked as reviewed by kvn (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28510#pullrequestreview-3531141077 From mgronlun at openjdk.org Tue Dec 2 16:50:47 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Tue, 2 Dec 2025 16:50:47 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v13] In-Reply-To: References: Message-ID: <4EZHq7TmhEpxqD3WRm4D8LHVXPuJabCRjTXOi0pPtZE=.866ecc1e-b0be-4797-a6f9-2a434a087bda@github.com> > Greetings, > > this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. > > To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. > > Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. > > Testing: jdk_jfr, manual AOT verification, stress testing > > Thanks > Markus Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: use strcmp instead of strncmp for equals ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28505/files - new: https://git.openjdk.org/jdk/pull/28505/files/3a44c10e..c2e36d2f Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=12 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=11-12 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28505.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28505/head:pull/28505 PR: https://git.openjdk.org/jdk/pull/28505 From coleenp at openjdk.org Tue Dec 2 17:05:07 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Tue, 2 Dec 2025 17:05:07 GMT Subject: RFR: 8358706: Integer overflow with -XX:MinOopMapAllocation=-1 [v2] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 14:33:19 GMT, Casper Norrbin wrote: >> Hi everyone, >> >> Passing a negative value to `-XX:MinOopMapAllocation` could trigger an integer overflow. This value is used as the initial size for the `OopMap` `GrowableArray` list inside `OopMapSet`. Negative inputs hits an assert when allocating for `GrowableArray`. Restricting this flag to positive values ensures we get a clear error message instead of a crash. >> >> Testing: >> - Oracle tier 1 >> - Local tests with `-XX:MinOopMapAllocation=x`, covering both valid and invalid values. > > Casper Norrbin has updated the pull request incrementally with one additional commit since the last revision: > > change flag type to int Yes, this looks good. Changing to int was a good idea. ------------- Marked as reviewed by coleenp (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28576#pullrequestreview-3531239723 From phubner at openjdk.org Tue Dec 2 17:05:06 2025 From: phubner at openjdk.org (Paul =?UTF-8?B?SMO8Ym5lcg==?=) Date: Tue, 2 Dec 2025 17:05:06 GMT Subject: RFR: 8358706: Integer overflow with -XX:MinOopMapAllocation=-1 [v2] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 14:33:19 GMT, Casper Norrbin wrote: >> Hi everyone, >> >> Passing a negative value to `-XX:MinOopMapAllocation` could trigger an integer overflow. This value is used as the initial size for the `OopMap` `GrowableArray` list inside `OopMapSet`. Negative inputs hits an assert when allocating for `GrowableArray`. Restricting this flag to positive values ensures we get a clear error message instead of a crash. >> >> Testing: >> - Oracle tier 1 >> - Local tests with `-XX:MinOopMapAllocation=x`, covering both valid and invalid values. > > Casper Norrbin has updated the pull request incrementally with one additional commit since the last revision: > > change flag type to int Thanks for doing this! ------------- Marked as reviewed by phubner (Author). PR Review: https://git.openjdk.org/jdk/pull/28576#pullrequestreview-3531223481 From fthevenet at openjdk.org Tue Dec 2 17:12:32 2025 From: fthevenet at openjdk.org (Frederic Thevenet) Date: Tue, 2 Dec 2025 17:12:32 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags [v2] In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 09:36:19 GMT, David Holmes wrote: > Have you run all of the tests that use this flag to check that the extra output does not cause any problems (e.g. if jtreg elides sections of the log because it is too long now)? In addition to running tier1 on GHA, I also explicitly ran the tests that matched the following: ``` find ./test -type f -name "*.java" -exec grep -l -e "-XX:+PrintFlagsFinal" -e "-XX:+PrintFlagsInitial" -e "-XX:+PrintFlagsWithComments" -e "PrintVMFlagsDCmd" {} + Hopefully that caught them all. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28579#issuecomment-3603117608 From erikj at openjdk.org Tue Dec 2 18:10:00 2025 From: erikj at openjdk.org (Erik Joelsson) Date: Tue, 2 Dec 2025 18:10:00 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> References: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> Message-ID: On Tue, 2 Dec 2025 15:07:11 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: > > - revert changes to avoid conflict > - add 27 to the acceptable boot versions Build changes look good. ------------- Marked as reviewed by erikj (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3531491706 From lmesnik at openjdk.org Tue Dec 2 18:10:23 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Tue, 2 Dec 2025 18:10:23 GMT Subject: Integrated: 8370905: Update vm.defmeth tests to use virtual threads In-Reply-To: References: Message-ID: On Wed, 29 Oct 2025 18:54:09 GMT, Leonid Mesnik wrote: > The vm.defmeth stress tests should use > `TestThreadFactory.newThread()` > to start virtual threads if test thread factory is used. This pull request has now been integrated. Changeset: 153c567a Author: Leonid Mesnik URL: https://git.openjdk.org/jdk/commit/153c567a4d3a537277a8c599142511aa4f4f3ae3 Stats: 13 lines in 1 file changed: 3 ins; 0 del; 10 mod 8370905: Update vm.defmeth tests to use virtual threads Reviewed-by: vlivanov, coleenp, pchilanomate ------------- PR: https://git.openjdk.org/jdk/pull/28048 From dholmes at openjdk.org Tue Dec 2 19:49:41 2025 From: dholmes at openjdk.org (David Holmes) Date: Tue, 2 Dec 2025 19:49:41 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v6] In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 00:53:15 GMT, Larry Cable wrote: >> Sergey Chernyshev 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 seven additional commits since the last revision: >> >> - Merge branch 'master' into JDK-8319589 >> - Removed unused native method >> - addressed review comment #2 >> - Apply suggestions from code review >> >> Co-authored-by: David Holmes <62092539+dholmes-ora at users.noreply.github.com> >> - Update src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java >> >> Co-authored-by: Andrey Turbanov >> - addressed review comments >> - 8319589: Attach from root to a user java process not supported in Mac > > we need someone with reviewer status to approve this for integration @larry-cable you can still "review" via the PR, rather than just email. ------------- PR Comment: https://git.openjdk.org/jdk/pull/25824#issuecomment-3603697996 From dholmes at openjdk.org Tue Dec 2 20:38:02 2025 From: dholmes at openjdk.org (David Holmes) Date: Tue, 2 Dec 2025 20:38:02 GMT Subject: RFR: 8372179: Remove Unused ConcurrentHashTable::MultiGetHandle In-Reply-To: References: Message-ID: On Wed, 19 Nov 2025 15:58:07 GMT, Thomas Schatzl wrote: > Hi all, > > please review the removal of `ConcurrentHashTable::MultiGetHandle` which is never used anywhere but in gtests. > > Testing: gha > > Thanks, > Thomas Seems fine. Thanks ------------- Marked as reviewed by dholmes (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28396#pullrequestreview-3532011398 From vlivanov at openjdk.org Tue Dec 2 20:39:55 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 20:39:55 GMT Subject: RFR: 8372845: Fold identity hash code if object is constant In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 02:49:52 GMT, Chen Liang wrote: > would it be safer for us to move the constant detection after generate_virtual_guard in the is_virtual if block? Good catch. I missed that the intrinsic is shared between `System::identityHashCode()` and `Object::hashCode`. I'm not sure it makes sense to support `Object::hashCode` unless C2 can eliminate `generate_virtual_guard` for a constant receiver. I'd just limit constant folding to `!is_virtual` case for now. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28589#issuecomment-3603869560 From vlivanov at openjdk.org Tue Dec 2 20:45:38 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 20:45:38 GMT Subject: RFR: 8372845: Fold identity hash code if object is constant In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 06:42:32 GMT, Tobias Hartmann wrote: > Just an observation: This patch will only allow folding during parsing. I would expect that often, opportunities only arise after other optimizations already took place. I deliberately omitted post-parse optimization opportunities for now. It would require a gradual lowering of the representation from a high-level macro node to low-level poking at object header. Moreover, final representation has complex control, so either the macro node should be a CFG node or a way to determine a location in CFG for a data-only macro node and expanding it there needs to be supported. (There are other use cases for such functionality, like lowering data nodes into pure calls, but no readily available implementation is there yet.) IMO something to work on in a follow-up enhancement. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28589#issuecomment-3603886860 From vlivanov at openjdk.org Tue Dec 2 20:56:18 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 20:56:18 GMT Subject: RFR: 8372845: Fold identity hash code if object is constant In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 20:36:50 GMT, Vladimir Ivanov wrote: > I'm not sure it makes sense to support Object::hashCode unless C2 can eliminate generate_virtual_guard for a constant receiver. I'd just limit constant folding to !is_virtual case for now. Or, alternatively, inspect constant object's v-table during compilation and ensure that corresponding slot points at `Object::hashCode`. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28589#issuecomment-3603919570 From jnorlinder at openjdk.org Tue Dec 2 20:59:41 2025 From: jnorlinder at openjdk.org (Jonas Norlinder) Date: Tue, 2 Dec 2025 20:59:41 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v7] In-Reply-To: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: <5jiZvlBoKaZj1ju-iRHmvncU94Jliq9Ln1d_5GtxEiQ=.68fba04c-beba-49c1-b154-b49671bb73d2@github.com> > Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. > > This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). > > Before patch: > > Benchmark Mode Cnt Score Error Units > CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op > CPUTime.execute:p0.00 sample 0.008 ms/op > CPUTime.execute:p0.50 sample 0.008 ms/op > CPUTime.execute:p0.90 sample 0.008 ms/op > CPUTime.execute:p0.95 sample 0.008 ms/op > CPUTime.execute:p0.99 sample 0.012 ms/op > CPUTime.execute:p0.999 sample 0.015 ms/op > CPUTime.execute:p0.9999 sample 0.021 ms/op > CPUTime.execute:p1.00 sample 1.030 ms/op > > > After patch: > > Benchmark Mode Cnt Score Error Units > CPUTime.execute sample 8984189 ? 10?? ms/op > CPUTime.execute:p0.00 sample ? 10?? ms/op > CPUTime.execute:p0.50 sample ? 10?? ms/op > CPUTime.execute:p0.90 sample ? 10?? ms/op > CPUTime.execute:p0.95 sample ? 10?? ms/op > CPUTime.execute:p0.99 sample 0.001 ms/op > CPUTime.execute:p0.999 sample 0.001 ms/op > CPUTime.execute:p0.9999 sample 0.006 ms/op > CPUTime.execute:p1.00 sample 0.054 ms/op > > > Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: Align signature to standard ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28556/files - new: https://git.openjdk.org/jdk/pull/28556/files/902b7787..d70c8cae Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28556&range=06 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28556&range=05-06 Stats: 21 lines in 1 file changed: 7 ins; 5 del; 9 mod Patch: https://git.openjdk.org/jdk/pull/28556.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28556/head:pull/28556 PR: https://git.openjdk.org/jdk/pull/28556 From jnorlinder at openjdk.org Tue Dec 2 20:59:43 2025 From: jnorlinder at openjdk.org (Jonas Norlinder) Date: Tue, 2 Dec 2025 20:59:43 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v3] In-Reply-To: References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: On Mon, 1 Dec 2025 04:00:58 GMT, David Holmes wrote: >> Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: >> >> Remove unused imports > > @JonasNorlinder this PR isn't fixing two issue. I think [JDK-8372584](https://bugs.openjdk.org/browse/JDK-8372584) should just be closed as a duplicate of [JDK-8210452](https://bugs.openjdk.org/browse/JDK-8210452) (which I had forgotten about and which @larry-cable did not get further with). Thanks for the comments @dholmes-ora and @tstuefe. I changed to aligning the signature to the standard. That way we don't have to document any requirements. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28556#issuecomment-3603921763 From kvn at openjdk.org Tue Dec 2 21:00:58 2025 From: kvn at openjdk.org (Vladimir Kozlov) Date: Tue, 2 Dec 2025 21:00:58 GMT Subject: RFR: 8372845: Fold identity hash code if object is constant In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 23:01:08 GMT, Chen Liang wrote: > Folding identity hash as constant if the incoming argument is constant would be useful for quick map lookups, such as for the [Classifier proposal](https://openjdk.org/jeps/8357674). Currently, identity hash is not constant because it loads the object header/mark word. We can add an explicit bypass to load an existing hash eagerly instead. Good. Yes, we can work on constant folding in IGVN later. ------------- Marked as reviewed by kvn (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28589#pullrequestreview-3532076661 From kvn at openjdk.org Tue Dec 2 21:01:00 2025 From: kvn at openjdk.org (Vladimir Kozlov) Date: Tue, 2 Dec 2025 21:01:00 GMT Subject: RFR: 8372845: Fold identity hash code if object is constant In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 20:53:56 GMT, Vladimir Ivanov wrote: >>> would it be safer for us to move the constant detection after generate_virtual_guard in the is_virtual if block? >> >> Good catch. I missed that the intrinsic is shared between `System::identityHashCode()` and `Object::hashCode`. >> >> I'm not sure it makes sense to support `Object::hashCode` unless C2 can eliminate `generate_virtual_guard` for a constant receiver. I'd just limit constant folding to `!is_virtual` case for now. > >> I'm not sure it makes sense to support Object::hashCode unless C2 can eliminate generate_virtual_guard for a constant receiver. I'd just limit constant folding to !is_virtual case for now. > > Or, alternatively, inspect constant object's v-table during compilation and ensure that corresponding slot points at `Object::hashCode`. @iwanowww please fix title to match JBS. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28589#issuecomment-3603933760 From vlivanov at openjdk.org Tue Dec 2 22:28:01 2025 From: vlivanov at openjdk.org (Vladimir Ivanov) Date: Tue, 2 Dec 2025 22:28:01 GMT Subject: RFR: 8372845: Fold identity hash code if object is constant In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 20:58:23 GMT, Vladimir Kozlov wrote: >>> I'm not sure it makes sense to support Object::hashCode unless C2 can eliminate generate_virtual_guard for a constant receiver. I'd just limit constant folding to !is_virtual case for now. >> >> Or, alternatively, inspect constant object's v-table during compilation and ensure that corresponding slot points at `Object::hashCode`. > > @iwanowww please fix title to match JBS. @vnkozlov I can't since I'm not the author of the PR :-) ------------- PR Comment: https://git.openjdk.org/jdk/pull/28589#issuecomment-3604211003 From liach at openjdk.org Tue Dec 2 23:18:26 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 23:18:26 GMT Subject: RFR: 8372845: C2: Fold identity hash code if object is constant [v2] In-Reply-To: References: Message-ID: > Folding identity hash as constant if the incoming argument is constant would be useful for quick map lookups, such as for the [Classifier proposal](https://openjdk.org/jeps/8357674). Currently, identity hash is not constant because it loads the object header/mark word. We can add an explicit bypass to load an existing hash eagerly instead. Chen Liang 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 five additional commits since the last revision: - Merge branch 'master' of https://github.com/openjdk/jdk into fix/identity-hash-const - Cleanup - identity hash support in C2 - Move around - Constant fold identity hash ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28589/files - new: https://git.openjdk.org/jdk/pull/28589/files/4a82f79d..69225241 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28589&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28589&range=00-01 Stats: 4382 lines in 99 files changed: 2947 ins; 684 del; 751 mod Patch: https://git.openjdk.org/jdk/pull/28589.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28589/head:pull/28589 PR: https://git.openjdk.org/jdk/pull/28589 From liach at openjdk.org Tue Dec 2 23:18:28 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 23:18:28 GMT Subject: RFR: 8372845: C2: Fold identity hash code if object is constant In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 23:01:08 GMT, Chen Liang wrote: > Folding identity hash as constant if the incoming argument is constant would be useful for quick map lookups, such as for the [Classifier proposal](https://openjdk.org/jeps/8357674). Currently, identity hash is not constant because it loads the object header/mark word. We can add an explicit bypass to load an existing hash eagerly instead. I tried to come up with an example where the buggy code from Vladimir would inline to identityHashCode when the right call would be virtual - couldn't construct such a case unfortunately :( I think we can deal with IGVN later, as this involves creating new macro node and other infrastructure support. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28589#issuecomment-3604321567 From liach at openjdk.org Tue Dec 2 23:25:29 2025 From: liach at openjdk.org (Chen Liang) Date: Tue, 2 Dec 2025 23:25:29 GMT Subject: RFR: 8372845: C2: Fold identity hash code if object is constant [v3] In-Reply-To: References: Message-ID: > Folding identity hash as constant if the incoming argument is constant would be useful for quick map lookups, such as for the [Classifier proposal](https://openjdk.org/jeps/8357674). Currently, identity hash is not constant because it loads the object header/mark word. We can add an explicit bypass to load an existing hash eagerly instead. Chen Liang has updated the pull request incrementally with one additional commit since the last revision: Typo ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28589/files - new: https://git.openjdk.org/jdk/pull/28589/files/69225241..b1d8be39 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28589&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28589&range=01-02 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28589.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28589/head:pull/28589 PR: https://git.openjdk.org/jdk/pull/28589 From darcy at openjdk.org Wed Dec 3 01:34:19 2025 From: darcy at openjdk.org (Joe Darcy) Date: Wed, 3 Dec 2025 01:34:19 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> References: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> Message-ID: On Tue, 2 Dec 2025 15:07:11 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: > > - revert changes to avoid conflict > - add 27 to the acceptable boot versions src/java.compiler/share/classes/javax/lang/model/SourceVersion.java line 483: > 481: */ > 482: RELEASE_26, > 483: At the top of the file where the per-release changes are all listed, please add a "27: tbd" entry after syncing in the changes from mainline which add an entry for JDK 26. (Also, as part of the sync please fix the "in in" stutter typo in the 26 entry. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2583333814 From dholmes at openjdk.org Wed Dec 3 01:49:02 2025 From: dholmes at openjdk.org (David Holmes) Date: Wed, 3 Dec 2025 01:49:02 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v7] In-Reply-To: <5jiZvlBoKaZj1ju-iRHmvncU94Jliq9Ln1d_5GtxEiQ=.68fba04c-beba-49c1-b154-b49671bb73d2@github.com> References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> <5jiZvlBoKaZj1ju-iRHmvncU94Jliq9Ln1d_5GtxEiQ=.68fba04c-beba-49c1-b154-b49671bb73d2@github.com> Message-ID: On Tue, 2 Dec 2025 20:59:41 GMT, Jonas Norlinder wrote: >> Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. >> >> This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). >> >> Before patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op >> CPUTime.execute:p0.00 sample 0.008 ms/op >> CPUTime.execute:p0.50 sample 0.008 ms/op >> CPUTime.execute:p0.90 sample 0.008 ms/op >> CPUTime.execute:p0.95 sample 0.008 ms/op >> CPUTime.execute:p0.99 sample 0.012 ms/op >> CPUTime.execute:p0.999 sample 0.015 ms/op >> CPUTime.execute:p0.9999 sample 0.021 ms/op >> CPUTime.execute:p1.00 sample 1.030 ms/op >> >> >> After patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 8984189 ? 10?? ms/op >> CPUTime.execute:p0.00 sample ? 10?? ms/op >> CPUTime.execute:p0.50 sample ? 10?? ms/op >> CPUTime.execute:p0.90 sample ? 10?? ms/op >> CPUTime.execute:p0.95 sample ? 10?? ms/op >> CPUTime.execute:p0.99 sample 0.001 ms/op >> CPUTime.execute:p0.999 sample 0.001 ms/op >> CPUTime.execute:p0.9999 sample 0.006 ms/op >> CPUTime.execute:p1.00 sample 0.054 ms/op >> >> >> Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. > > Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: > > Align signature to standard Looks good. Thanks for the updates. ------------- Marked as reviewed by dholmes (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28556#pullrequestreview-3532826717 From iris at openjdk.org Wed Dec 3 02:12:00 2025 From: iris at openjdk.org (Iris Clark) Date: Wed, 3 Dec 2025 02:12:00 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> References: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> Message-ID: On Tue, 2 Dec 2025 15:07:11 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: > > - revert changes to avoid conflict > - add 27 to the acceptable boot versions Marked as reviewed by iris (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3532863059 From sspitsyn at openjdk.org Wed Dec 3 03:31:09 2025 From: sspitsyn at openjdk.org (Serguei Spitsyn) Date: Wed, 3 Dec 2025 03:31:09 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v7] In-Reply-To: References: Message-ID: <82tyZ0Xz61HFwpcBRI8AabsxtM_wy3Z4WHWI-jmPkHA=.d34b5c8a-53fb-4e43-9c32-e04d5a510cad@github.com> On Tue, 2 Dec 2025 15:46:10 GMT, Sergey Chernyshev wrote: >> Hi all, >> >> I would like to propose a fix for JDK-8319589. This will allow jcmd and jps running as root to get the complete list of JVMs running by all users, and to attach from root to non-root JVMs. Previously, JDK-8197387 introduced the same possibility on Linux. >> >> This change affects macOS, that uses "secure" per-user temporary directories. It only affects JVMs running as root, the behavior in non-privileged JVMs remains unchanged. >> >> Jcmd and jps rely on LocalVmManager to get the initial list of the local VMs. The LocalVmManager uses sun.jvmstat.PlatformSupport to get the list of temp directories, where it searches for user's PerfData directory such as "hsperfdata_". In macosx the temp directories are per-user, the temp path is returned by confstr(_CS_DARWIN_USER_TEMP_DIR). The per-user directories are mode 700 and so they are read-protected from non-privileged users and can be accessed by the owner and the root. >> >> Both jps and jcmd (HotSpotAttachProvider) create MonitoredVm objects, that have PerfDataBuffer that performs attachment to the target. Only the attachable VMs are listed in jcmd output. >> >> The proposed patch changes the list of directories returned by the PlatformSupport#getTemporaryDirectories() in VMs running as root. The list is later used in VirtualMachineImpl (jdk.attach). It changes also the way mmap_attach_shared() searches for hsperfdata_/ files to map the shared memory. Mmap_attach_shared() and VirtualMachineImpl (via PlatformSupport) list the content of /var/folders, where the temp directories are located, more specificly the temp directories are /var/folders///T as hinted in [1]. The full list is returned by newly added PlatformSupportImpl#getTemporaryDirectories(). >> >> The attaching client's VirtualMachineImpl needs the target process's temp directory to find .java and create .attach files. It uses the list returned by PlatformSupportImpl#getTemporaryDirectories() and the ProcessHandle of the target process to search for user's PerfData directory, e.g. hsperfdata_, which is in the target process's temp directory, exactly where it expects to see the .java in return on sending SIGQUIT to the target VM. >> >> Mmap_attach_shared() traverses the /var/folders in get_user_tmp_dir() and looks for a hsperfdata_ folder. If that folder is found in /var/folders/*/*/T, that means the temp folder corresponds to the and to t... > > Sergey Chernyshev 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 eight additional commits since the last revision: > > - Merge branch 'master' into JDK-8319589 > - Merge branch 'master' into JDK-8319589 > - Removed unused native method > - addressed review comment #2 > - Apply suggestions from code review > > Co-authored-by: David Holmes <62092539+dholmes-ora at users.noreply.github.com> > - Update src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java > > Co-authored-by: Andrey Turbanov > - addressed review comments > - 8319589: Attach from root to a user java process not supported in Mac src/hotspot/os/bsd/os_bsd.cpp line 881: > 879: uid_t uid = get_process_uid(pid); > 880: return (uid != (uid_t)-1) ? os::Posix::is_root(uid) : false; > 881: } Nit: - missed dot at the end of comments at lines 864, 877 - indent above has to be 2, not 4 src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java line 78: > 76: // Then we attempt to find the socket file again. > 77: // In macOS the socket file is located in per-user temp directory. > 78: String tempDir = getTempDirFromPid(pid); Nit: I'd suggest to rename it to `tempdir` to follow the local naming convention which prevails. src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java line 223: > 221: } > 222: > 223: private File createAttachFile(String dir, int pid) throws IOException { Nit: I'd suggest to rename `dir` to `tmpdir` to keep it unified. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25824#discussion_r2583476499 PR Review Comment: https://git.openjdk.org/jdk/pull/25824#discussion_r2583485123 PR Review Comment: https://git.openjdk.org/jdk/pull/25824#discussion_r2583487596 From sspitsyn at openjdk.org Wed Dec 3 03:31:12 2025 From: sspitsyn at openjdk.org (Serguei Spitsyn) Date: Wed, 3 Dec 2025 03:31:12 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v2] In-Reply-To: <_mZBaD6fA4dZANRC-3jA-4Vu2e2FN0ViTrat0_H2bes=.43fcacb1-b2e7-49c9-b821-9765c087d8c2@github.com> References: <8-K1wPHmyNI27RRTsvvuUdQJmt44m5QDr6cyt9hhLXQ=.ee86ccc9-839f-4af9-90eb-5d3a46b66ccf@github.com> <_mZBaD6fA4dZANRC-3jA-4Vu2e2FN0ViTrat0_H2bes=.43fcacb1-b2e7-49c9-b821-9765c087d8c2@github.com> Message-ID: On Tue, 23 Sep 2025 02:40:48 GMT, David Holmes wrote: >> Sergey Chernyshev has updated the pull request incrementally with two additional commits since the last revision: >> >> - Update src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java >> >> Co-authored-by: Andrey Turbanov >> - addressed review comments > > src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java line 31: > >> 29: import com.sun.tools.attach.spi.AttachProvider; >> 30: >> 31: import sun.jvmstat.PlatformSupport; > > This is convenient but I'm not sure it is appropriate. Need the serviceability folk to comment. This looks like an unexpected and undesired dependency. I'll consult with other serviceability guys to find out what is better here. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25824#discussion_r2583491666 From dholmes at openjdk.org Wed Dec 3 04:12:59 2025 From: dholmes at openjdk.org (David Holmes) Date: Wed, 3 Dec 2025 04:12:59 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> References: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> Message-ID: On Tue, 2 Dec 2025 15:07:11 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: > > - revert changes to avoid conflict > - add 27 to the acceptable boot versions Hotspot changes trivially fine. ------------- Marked as reviewed by dholmes (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3533103238 From schernyshev at openjdk.org Wed Dec 3 07:22:51 2025 From: schernyshev at openjdk.org (Sergey Chernyshev) Date: Wed, 3 Dec 2025 07:22:51 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v8] In-Reply-To: References: Message-ID: <7hs5qoZhrBxXH6kJ1uowTEWZEFU_5Bt3V14p5ATcoeg=.cd08c1ce-886a-4a0f-9222-3bdec6c0ba96@github.com> > Hi all, > > I would like to propose a fix for JDK-8319589. This will allow jcmd and jps running as root to get the complete list of JVMs running by all users, and to attach from root to non-root JVMs. Previously, JDK-8197387 introduced the same possibility on Linux. > > This change affects macOS, that uses "secure" per-user temporary directories. It only affects JVMs running as root, the behavior in non-privileged JVMs remains unchanged. > > Jcmd and jps rely on LocalVmManager to get the initial list of the local VMs. The LocalVmManager uses sun.jvmstat.PlatformSupport to get the list of temp directories, where it searches for user's PerfData directory such as "hsperfdata_". In macosx the temp directories are per-user, the temp path is returned by confstr(_CS_DARWIN_USER_TEMP_DIR). The per-user directories are mode 700 and so they are read-protected from non-privileged users and can be accessed by the owner and the root. > > Both jps and jcmd (HotSpotAttachProvider) create MonitoredVm objects, that have PerfDataBuffer that performs attachment to the target. Only the attachable VMs are listed in jcmd output. > > The proposed patch changes the list of directories returned by the PlatformSupport#getTemporaryDirectories() in VMs running as root. The list is later used in VirtualMachineImpl (jdk.attach). It changes also the way mmap_attach_shared() searches for hsperfdata_/ files to map the shared memory. Mmap_attach_shared() and VirtualMachineImpl (via PlatformSupport) list the content of /var/folders, where the temp directories are located, more specificly the temp directories are /var/folders///T as hinted in [1]. The full list is returned by newly added PlatformSupportImpl#getTemporaryDirectories(). > > The attaching client's VirtualMachineImpl needs the target process's temp directory to find .java and create .attach files. It uses the list returned by PlatformSupportImpl#getTemporaryDirectories() and the ProcessHandle of the target process to search for user's PerfData directory, e.g. hsperfdata_, which is in the target process's temp directory, exactly where it expects to see the .java in return on sending SIGQUIT to the target VM. > > Mmap_attach_shared() traverses the /var/folders in get_user_tmp_dir() and looks for a hsperfdata_ folder. If that folder is found in /var/folders/*/*/T, that means the temp folder corresponds to the and to the JVM being attached to. > > The... Sergey Chernyshev has updated the pull request incrementally with one additional commit since the last revision: addressed review comments ------------- Changes: - all: https://git.openjdk.org/jdk/pull/25824/files - new: https://git.openjdk.org/jdk/pull/25824/files/8118017f..fd1645b0 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=25824&range=07 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25824&range=06-07 Stats: 18 lines in 2 files changed: 1 ins; 1 del; 16 mod Patch: https://git.openjdk.org/jdk/pull/25824.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/25824/head:pull/25824 PR: https://git.openjdk.org/jdk/pull/25824 From schernyshev at openjdk.org Wed Dec 3 07:23:00 2025 From: schernyshev at openjdk.org (Sergey Chernyshev) Date: Wed, 3 Dec 2025 07:23:00 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v7] In-Reply-To: <82tyZ0Xz61HFwpcBRI8AabsxtM_wy3Z4WHWI-jmPkHA=.d34b5c8a-53fb-4e43-9c32-e04d5a510cad@github.com> References: <82tyZ0Xz61HFwpcBRI8AabsxtM_wy3Z4WHWI-jmPkHA=.d34b5c8a-53fb-4e43-9c32-e04d5a510cad@github.com> Message-ID: On Wed, 3 Dec 2025 03:10:19 GMT, Serguei Spitsyn wrote: >> Sergey Chernyshev 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 eight additional commits since the last revision: >> >> - Merge branch 'master' into JDK-8319589 >> - Merge branch 'master' into JDK-8319589 >> - Removed unused native method >> - addressed review comment #2 >> - Apply suggestions from code review >> >> Co-authored-by: David Holmes <62092539+dholmes-ora at users.noreply.github.com> >> - Update src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java >> >> Co-authored-by: Andrey Turbanov >> - addressed review comments >> - 8319589: Attach from root to a user java process not supported in Mac > > src/hotspot/os/bsd/os_bsd.cpp line 881: > >> 879: uid_t uid = get_process_uid(pid); >> 880: return (uid != (uid_t)-1) ? os::Posix::is_root(uid) : false; >> 881: } > > Nit: > - missed dot at the end of comments at lines 864, 877 > - indent above has to be 2, not 4 Thanks @sspitsyn , fixed. > src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java line 78: > >> 76: // Then we attempt to find the socket file again. >> 77: // In macOS the socket file is located in per-user temp directory. >> 78: String tempDir = getTempDirFromPid(pid); > > Nit: I'd suggest to rename it to `tempdir` to follow the local naming convention which prevails. Thanks! Fixed. > src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java line 223: > >> 221: } >> 222: >> 223: private File createAttachFile(String dir, int pid) throws IOException { > > Nit: I'd suggest to rename `dir` to `tmpdir` to keep it unified. done. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25824#discussion_r2583859087 PR Review Comment: https://git.openjdk.org/jdk/pull/25824#discussion_r2583860448 PR Review Comment: https://git.openjdk.org/jdk/pull/25824#discussion_r2583860781 From schernyshev at openjdk.org Wed Dec 3 07:22:52 2025 From: schernyshev at openjdk.org (Sergey Chernyshev) Date: Wed, 3 Dec 2025 07:22:52 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac In-Reply-To: <7fc0631a-ae51-4df2-bc7c-39369b5d6593@oracle.com> References: <7fc0631a-ae51-4df2-bc7c-39369b5d6593@oracle.com> Message-ID: On Tue, 2 Dec 2025 15:50:14 GMT, Laurence Cable wrote: > I approve but I am not a reviewer :( Thanks you @larry-cable for review. ------------- PR Comment: https://git.openjdk.org/jdk/pull/25824#issuecomment-3605428925 From sspitsyn at openjdk.org Wed Dec 3 07:31:12 2025 From: sspitsyn at openjdk.org (Serguei Spitsyn) Date: Wed, 3 Dec 2025 07:31:12 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v8] In-Reply-To: <7hs5qoZhrBxXH6kJ1uowTEWZEFU_5Bt3V14p5ATcoeg=.cd08c1ce-886a-4a0f-9222-3bdec6c0ba96@github.com> References: <7hs5qoZhrBxXH6kJ1uowTEWZEFU_5Bt3V14p5ATcoeg=.cd08c1ce-886a-4a0f-9222-3bdec6c0ba96@github.com> Message-ID: <63PmCR3UqPLsAldxHCS78MZ7hViJqdvOg891j28uhww=.b571ab58-4b7f-413b-814e-e42ab8e7b010@github.com> On Wed, 3 Dec 2025 07:22:51 GMT, Sergey Chernyshev wrote: >> Hi all, >> >> I would like to propose a fix for JDK-8319589. This will allow jcmd and jps running as root to get the complete list of JVMs running by all users, and to attach from root to non-root JVMs. Previously, JDK-8197387 introduced the same possibility on Linux. >> >> This change affects macOS, that uses "secure" per-user temporary directories. It only affects JVMs running as root, the behavior in non-privileged JVMs remains unchanged. >> >> Jcmd and jps rely on LocalVmManager to get the initial list of the local VMs. The LocalVmManager uses sun.jvmstat.PlatformSupport to get the list of temp directories, where it searches for user's PerfData directory such as "hsperfdata_". In macosx the temp directories are per-user, the temp path is returned by confstr(_CS_DARWIN_USER_TEMP_DIR). The per-user directories are mode 700 and so they are read-protected from non-privileged users and can be accessed by the owner and the root. >> >> Both jps and jcmd (HotSpotAttachProvider) create MonitoredVm objects, that have PerfDataBuffer that performs attachment to the target. Only the attachable VMs are listed in jcmd output. >> >> The proposed patch changes the list of directories returned by the PlatformSupport#getTemporaryDirectories() in VMs running as root. The list is later used in VirtualMachineImpl (jdk.attach). It changes also the way mmap_attach_shared() searches for hsperfdata_/ files to map the shared memory. Mmap_attach_shared() and VirtualMachineImpl (via PlatformSupport) list the content of /var/folders, where the temp directories are located, more specificly the temp directories are /var/folders///T as hinted in [1]. The full list is returned by newly added PlatformSupportImpl#getTemporaryDirectories(). >> >> The attaching client's VirtualMachineImpl needs the target process's temp directory to find .java and create .attach files. It uses the list returned by PlatformSupportImpl#getTemporaryDirectories() and the ProcessHandle of the target process to search for user's PerfData directory, e.g. hsperfdata_, which is in the target process's temp directory, exactly where it expects to see the .java in return on sending SIGQUIT to the target VM. >> >> Mmap_attach_shared() traverses the /var/folders in get_user_tmp_dir() and looks for a hsperfdata_ folder. If that folder is found in /var/folders/*/*/T, that means the temp folder corresponds to the and to t... > > Sergey Chernyshev has updated the pull request incrementally with one additional commit since the last revision: > > addressed review comments This is a nice fix in general. Thank you for this work! I hope to complete my review tomorrow with one more pass. Question: How was this update tested? Do you have a jtreg test or you've done it manually? src/hotspot/os/bsd/os_bsd.cpp line 956: > 954: } > 955: #endif > 956: Nit: I'd suggest to get rid of empty lines which do not improve readability: 890, 903, 908, 917, 923, 930, 933, 941, 944 Also, the comment at line 931 is better to start with a capital letter: `// If the ..` . ------------- PR Review: https://git.openjdk.org/jdk/pull/25824#pullrequestreview-3533557192 PR Review Comment: https://git.openjdk.org/jdk/pull/25824#discussion_r2583937603 From tschatzl at openjdk.org Wed Dec 3 08:11:08 2025 From: tschatzl at openjdk.org (Thomas Schatzl) Date: Wed, 3 Dec 2025 08:11:08 GMT Subject: RFR: 8372571: ResourceHashTable for some AOT data structures miss placement operator when allocating In-Reply-To: References: Message-ID: On Tue, 2 Dec 2025 13:06:38 GMT, Axel Boldt-Christmas wrote: >> Hi all, >> >> please review this cleanup adding two missing placement operators when allocating `ResizeableHashTable`s during AOT dumping. Both table instances are clearly meant to be accessible as they are assigned to static members and accessed outside of the method creating them. >> >> There is no problematic `ResourceMark` though, so there should be no current impact. >> >> Testing: gha >> >> Thanks, >> Thomas > > lgtm. Thanks @xmas92 @vnkozlov @jdksjolen for your reviews ------------- PR Comment: https://git.openjdk.org/jdk/pull/28510#issuecomment-3605570031 From tschatzl at openjdk.org Wed Dec 3 08:11:09 2025 From: tschatzl at openjdk.org (Thomas Schatzl) Date: Wed, 3 Dec 2025 08:11:09 GMT Subject: Integrated: 8372571: ResourceHashTable for some AOT data structures miss placement operator when allocating In-Reply-To: References: Message-ID: On Wed, 26 Nov 2025 15:41:25 GMT, Thomas Schatzl wrote: > Hi all, > > please review this cleanup adding two missing placement operators when allocating `ResizeableHashTable`s during AOT dumping. Both table instances are clearly meant to be accessible as they are assigned to static members and accessed outside of the method creating them. > > There is no problematic `ResourceMark` though, so there should be no current impact. > > Testing: gha > > Thanks, > Thomas This pull request has now been integrated. Changeset: 2139c8c6 Author: Thomas Schatzl URL: https://git.openjdk.org/jdk/commit/2139c8c6e6e5c5f2c64ed3ad9ad8bd148a86efae Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod 8372571: ResourceHashTable for some AOT data structures miss placement operator when allocating Reviewed-by: aboldtch, jsjolen, kvn ------------- PR: https://git.openjdk.org/jdk/pull/28510 From duke at openjdk.org Wed Dec 3 09:17:42 2025 From: duke at openjdk.org (duke) Date: Wed, 3 Dec 2025 09:17:42 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v7] In-Reply-To: <5jiZvlBoKaZj1ju-iRHmvncU94Jliq9Ln1d_5GtxEiQ=.68fba04c-beba-49c1-b154-b49671bb73d2@github.com> References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> <5jiZvlBoKaZj1ju-iRHmvncU94Jliq9Ln1d_5GtxEiQ=.68fba04c-beba-49c1-b154-b49671bb73d2@github.com> Message-ID: On Tue, 2 Dec 2025 20:59:41 GMT, Jonas Norlinder wrote: >> Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. >> >> This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). >> >> Before patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op >> CPUTime.execute:p0.00 sample 0.008 ms/op >> CPUTime.execute:p0.50 sample 0.008 ms/op >> CPUTime.execute:p0.90 sample 0.008 ms/op >> CPUTime.execute:p0.95 sample 0.008 ms/op >> CPUTime.execute:p0.99 sample 0.012 ms/op >> CPUTime.execute:p0.999 sample 0.015 ms/op >> CPUTime.execute:p0.9999 sample 0.021 ms/op >> CPUTime.execute:p1.00 sample 1.030 ms/op >> >> >> After patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 8984189 ? 10?? ms/op >> CPUTime.execute:p0.00 sample ? 10?? ms/op >> CPUTime.execute:p0.50 sample ? 10?? ms/op >> CPUTime.execute:p0.90 sample ? 10?? ms/op >> CPUTime.execute:p0.95 sample ? 10?? ms/op >> CPUTime.execute:p0.99 sample 0.001 ms/op >> CPUTime.execute:p0.999 sample 0.001 ms/op >> CPUTime.execute:p0.9999 sample 0.006 ms/op >> CPUTime.execute:p1.00 sample 0.054 ms/op >> >> >> Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. > > Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: > > Align signature to standard @JonasNorlinder Your change (at version d70c8cae32269ab94e82c643aa9ba54bc7512f2e) is now ready to be sponsored by a Committer. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28556#issuecomment-3605829292 From iwalulya at openjdk.org Wed Dec 3 09:24:55 2025 From: iwalulya at openjdk.org (Ivan Walulya) Date: Wed, 3 Dec 2025 09:24:55 GMT Subject: RFR: 8372179: Remove Unused ConcurrentHashTable::MultiGetHandle In-Reply-To: References: Message-ID: <3oYw-dGliUDEzEiC_Xrm4f5zjJTmxxYwZyPxDp8i0QU=.aaf67c3d-fe98-4fb0-b148-f2877791ed40@github.com> On Wed, 19 Nov 2025 15:58:07 GMT, Thomas Schatzl wrote: > Hi all, > > please review the removal of `ConcurrentHashTable::MultiGetHandle` which is never used anywhere but in gtests. > > Testing: gha > > Thanks, > Thomas Marked as reviewed by iwalulya (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28396#pullrequestreview-3534013654 From kevinw at openjdk.org Wed Dec 3 09:35:32 2025 From: kevinw at openjdk.org (Kevin Walls) Date: Wed, 3 Dec 2025 09:35:32 GMT Subject: RFR: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime [v7] In-Reply-To: <5jiZvlBoKaZj1ju-iRHmvncU94Jliq9Ln1d_5GtxEiQ=.68fba04c-beba-49c1-b154-b49671bb73d2@github.com> References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> <5jiZvlBoKaZj1ju-iRHmvncU94Jliq9Ln1d_5GtxEiQ=.68fba04c-beba-49c1-b154-b49671bb73d2@github.com> Message-ID: On Tue, 2 Dec 2025 20:59:41 GMT, Jonas Norlinder wrote: >> Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. >> >> This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). >> >> Before patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op >> CPUTime.execute:p0.00 sample 0.008 ms/op >> CPUTime.execute:p0.50 sample 0.008 ms/op >> CPUTime.execute:p0.90 sample 0.008 ms/op >> CPUTime.execute:p0.95 sample 0.008 ms/op >> CPUTime.execute:p0.99 sample 0.012 ms/op >> CPUTime.execute:p0.999 sample 0.015 ms/op >> CPUTime.execute:p0.9999 sample 0.021 ms/op >> CPUTime.execute:p1.00 sample 1.030 ms/op >> >> >> After patch: >> >> Benchmark Mode Cnt Score Error Units >> CPUTime.execute sample 8984189 ? 10?? ms/op >> CPUTime.execute:p0.00 sample ? 10?? ms/op >> CPUTime.execute:p0.50 sample ? 10?? ms/op >> CPUTime.execute:p0.90 sample ? 10?? ms/op >> CPUTime.execute:p0.95 sample ? 10?? ms/op >> CPUTime.execute:p0.99 sample 0.001 ms/op >> CPUTime.execute:p0.999 sample 0.001 ms/op >> CPUTime.execute:p0.9999 sample 0.006 ms/op >> CPUTime.execute:p1.00 sample 0.054 ms/op >> >> >> Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. > > Jonas Norlinder has updated the pull request incrementally with one additional commit since the last revision: > > Align signature to standard Looks good - I remember that fix for parsing the program binary name containing brackets, good to have it gone. ------------- Marked as reviewed by kevinw (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28556#pullrequestreview-3534064399 From jnorlinder at openjdk.org Wed Dec 3 09:38:48 2025 From: jnorlinder at openjdk.org (Jonas Norlinder) Date: Wed, 3 Dec 2025 09:38:48 GMT Subject: Integrated: 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime In-Reply-To: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> References: <8_C402dOOb8Qq5-rSe-iUtE96BuMhxttlPcN4WgYFig=.aad6aad3-9490-471e-b9cb-6fa9b4c9235e@github.com> Message-ID: <5D6oOnP7w8IRNg_1EjKqgca5gHiO5jlsAZqln4I8Ff0=.cefffdb9-5a40-4fd6-957b-da1dcbb65f7f@github.com> On Fri, 28 Nov 2025 12:00:28 GMT, Jonas Norlinder wrote: > Since kernel v2.6.12 the Linux ABI have had support for encoding the clock types in the last three bits. Setting bit to 001 (CPUCLOCK_VIRT) will result in the kernel returning only user time. POSIX compliant implementations of pthread_getcpuclockid for the Linux kernel defaults to construct a clockid that with 010 (CPUCLOCK_SCHED) set, which return system+user time, which is what the POSIX standard mandates, see POSIX.1-2024/IEEE Std 1003.1-2024 ?3.90. This patch joins the family of glibc, musl etc. that utilities this bit pattern. > > This PR also results in improved performance and thus a reduced observer effect, especially for the 100th percentile (max). > > Before patch: > > Benchmark Mode Cnt Score Error Units > CPUTime.execute sample 7506555 0.008 ? 0.001 ms/op > CPUTime.execute:p0.00 sample 0.008 ms/op > CPUTime.execute:p0.50 sample 0.008 ms/op > CPUTime.execute:p0.90 sample 0.008 ms/op > CPUTime.execute:p0.95 sample 0.008 ms/op > CPUTime.execute:p0.99 sample 0.012 ms/op > CPUTime.execute:p0.999 sample 0.015 ms/op > CPUTime.execute:p0.9999 sample 0.021 ms/op > CPUTime.execute:p1.00 sample 1.030 ms/op > > > After patch: > > Benchmark Mode Cnt Score Error Units > CPUTime.execute sample 8984189 ? 10?? ms/op > CPUTime.execute:p0.00 sample ? 10?? ms/op > CPUTime.execute:p0.50 sample ? 10?? ms/op > CPUTime.execute:p0.90 sample ? 10?? ms/op > CPUTime.execute:p0.95 sample ? 10?? ms/op > CPUTime.execute:p0.99 sample 0.001 ms/op > CPUTime.execute:p0.999 sample 0.001 ms/op > CPUTime.execute:p0.9999 sample 0.006 ms/op > CPUTime.execute:p1.00 sample 0.054 ms/op > > > Testing: `java/lang/management/ThreadMXBean/ThreadUserTime.java` and the added microbenchmark. This pull request has now been integrated. Changeset: 858d2e43 Author: Jonas Norlinder Committer: Kevin Walls URL: https://git.openjdk.org/jdk/commit/858d2e434dd4eb8aa94784bb1cd115554eec5dff Stats: 138 lines in 3 files changed: 84 ins; 42 del; 12 mod 8372584: [Linux]: Replace reading proc to get thread user CPU time with clock_gettime Reviewed-by: dholmes, kevinw, redestad ------------- PR: https://git.openjdk.org/jdk/pull/28556 From cnorrbin at openjdk.org Wed Dec 3 10:06:35 2025 From: cnorrbin at openjdk.org (Casper Norrbin) Date: Wed, 3 Dec 2025 10:06:35 GMT Subject: RFR: 8358706: Integer overflow with -XX:MinOopMapAllocation=-1 [v2] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 14:33:19 GMT, Casper Norrbin wrote: >> Hi everyone, >> >> Passing a negative value to `-XX:MinOopMapAllocation` could trigger an integer overflow. This value is used as the initial size for the `OopMap` `GrowableArray` list inside `OopMapSet`. Negative inputs hits an assert when allocating for `GrowableArray`. Restricting this flag to positive values ensures we get a clear error message instead of a crash. >> >> Testing: >> - Oracle tier 1 >> - Local tests with `-XX:MinOopMapAllocation=x`, covering both valid and invalid values. > > Casper Norrbin has updated the pull request incrementally with one additional commit since the last revision: > > change flag type to int Thank you both for the reviews! ------------- PR Comment: https://git.openjdk.org/jdk/pull/28576#issuecomment-3606030527 From cnorrbin at openjdk.org Wed Dec 3 10:06:36 2025 From: cnorrbin at openjdk.org (Casper Norrbin) Date: Wed, 3 Dec 2025 10:06:36 GMT Subject: Integrated: 8358706: Integer overflow with -XX:MinOopMapAllocation=-1 In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 14:00:22 GMT, Casper Norrbin wrote: > Hi everyone, > > Passing a negative value to `-XX:MinOopMapAllocation` could trigger an integer overflow. This value is used as the initial size for the `OopMap` `GrowableArray` list inside `OopMapSet`. Negative inputs hits an assert when allocating for `GrowableArray`. Restricting this flag to positive values ensures we get a clear error message instead of a crash. > > Testing: > - Oracle tier 1 > - Local tests with `-XX:MinOopMapAllocation=x`, covering both valid and invalid values. This pull request has now been integrated. Changeset: 94977063 Author: Casper Norrbin URL: https://git.openjdk.org/jdk/commit/94977063baafc2e293193d284db408a069f12aca Stats: 2 lines in 1 file changed: 1 ins; 0 del; 1 mod 8358706: Integer overflow with -XX:MinOopMapAllocation=-1 Reviewed-by: phubner, coleenp ------------- PR: https://git.openjdk.org/jdk/pull/28576 From nbenalla at openjdk.org Wed Dec 3 10:18:16 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 10:18:16 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v10] In-Reply-To: References: Message-ID: <1NKVGfCOckDGbbnQKtz0LfvPFhh5SjyUauWyvbsw2yM=.ad2c7571-4ab3-4b1f-b8d7-5ab0814635c7@github.com> > Get JDK 27 underway. Nizar Benalla 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 21 additional commits since the last revision: - Merge branch 'master' into start-of-release-27 - revert changes to avoid conflict - add 27 to the acceptable boot versions - Merge branch 'master' into start-of-release-27 - problem list failing test - Merge branch 'master' into start-of-release-27 - expand start of release documentation - Merge branch 'master' into start-of-release-27 - Changes required for hard 80 character line limit - Update --release 26 symbol information for JDK 26 build 25 The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ - ... and 11 more: https://git.openjdk.org/jdk/compare/443e5643...8bbe15f2 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/1237304b..8bbe15f2 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=09 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=08-09 Stats: 3514 lines in 111 files changed: 2399 ins; 621 del; 494 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From nbenalla at openjdk.org Wed Dec 3 10:31:18 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 10:31:18 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v11] In-Reply-To: References: Message-ID: > Get JDK 27 underway. Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: - fix jls 27 link - fix typo and add entry for 27 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/8bbe15f2..4bf97a8a Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=10 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=09-10 Stats: 3 lines in 1 file changed: 1 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From nbenalla at openjdk.org Wed Dec 3 10:31:24 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 10:31:24 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v7] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 19:46:37 GMT, Joe Darcy wrote: >> Nizar Benalla 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 17 additional commits since the last revision: >> >> - problem list failing test >> - Merge branch 'master' into start-of-release-27 >> - expand start of release documentation >> - Merge branch 'master' into start-of-release-27 >> - Changes required for hard 80 character line limit >> - Update --release 26 symbol information for JDK 26 build 25 >> The macOS/AArch64 build 25 was taken from https://jdk.java.net/26/ >> - revert MAX_COLUMNS to 80 >> - Update LATEST_MAJOR_VERSION in Versions.java >> - Merge branch 'master' into start-of-release-27 >> - Merge branch 'master' into start-of-release-27 >> - ... and 7 more: https://git.openjdk.org/jdk/compare/eae9329d...e5214614 > > src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java line 394: > >> 392: * >> 393: * @see > 394: * href="https://docs.oracle.com/en/java/javase/27/docs/specs/jvms/index.html"> > > Presumably the analagous URL update should be done here as in ClassFileFormatVersion for the JLS instead of the JVMS. Fixed in https://github.com/openjdk/jdk/pull/28130/commits/4bf97a8ab5a134ab592f7a84b7e1dc130d04a845; Good catch! > src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java line 1368: > >> 1366: } >> 1367: >> 1368: private static String formatAbbreviatedList(Collection values) { > > I think changing the policy here is okay, but it should be better documented in comments here. > > Additionally, it assume there will be a dense collection of supported values between the 4 th and (n-3) rd. That is currently the de facto policy, but is not ironclad. This assumption should also be documented. Extracted and fixed in a separate issue https://github.com/openjdk/jdk/commit/8a28a76451b2bbde49c1c051cb66c784f9e3cdd2 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2584514802 PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2584513205 From nbenalla at openjdk.org Wed Dec 3 10:31:27 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 10:31:27 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v9] In-Reply-To: References: <1AN1mD0ieBM6vimoxvEYBpputw1jdAhSlZckB3JT2sw=.bacfe664-2db7-47eb-a1c5-1c6ab614420c@github.com> Message-ID: On Wed, 3 Dec 2025 01:32:00 GMT, Joe Darcy wrote: >> Nizar Benalla has updated the pull request incrementally with two additional commits since the last revision: >> >> - revert changes to avoid conflict >> - add 27 to the acceptable boot versions > > src/java.compiler/share/classes/javax/lang/model/SourceVersion.java line 483: > >> 481: */ >> 482: RELEASE_26, >> 483: > > At the top of the file where the per-release changes are all listed, please add a > > "27: tbd" > > entry after syncing in the changes from mainline which add an entry for JDK 26. (Also, as part of the sync please fix the "in in" stutter typo in the 26 entry. Fixed in https://github.com/openjdk/jdk/pull/28130/commits/4b14a7593c9cbc6f67d400e823d47d23e304d564 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28130#discussion_r2584507508 From mgronlun at openjdk.org Wed Dec 3 10:45:43 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Wed, 3 Dec 2025 10:45:43 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v14] In-Reply-To: References: Message-ID: <2tMUYu-TFZeFFfpE_054SK4rzCZZgs_UMiNudMx440M=.ce00a309-abf1-4325-9781-65dc0b5c6d59@github.com> > Greetings, > > this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. > > To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. > > Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. > > Testing: jdk_jfr, manual AOT verification, stress testing > > Thanks > Markus Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: copyright header ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28505/files - new: https://git.openjdk.org/jdk/pull/28505/files/c2e36d2f..85bf2d25 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=13 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=12-13 Stats: 4 lines in 2 files changed: 0 ins; 0 del; 4 mod Patch: https://git.openjdk.org/jdk/pull/28505.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28505/head:pull/28505 PR: https://git.openjdk.org/jdk/pull/28505 From egahlin at openjdk.org Wed Dec 3 10:58:54 2025 From: egahlin at openjdk.org (Erik Gahlin) Date: Wed, 3 Dec 2025 10:58:54 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v14] In-Reply-To: <2tMUYu-TFZeFFfpE_054SK4rzCZZgs_UMiNudMx440M=.ce00a309-abf1-4325-9781-65dc0b5c6d59@github.com> References: <2tMUYu-TFZeFFfpE_054SK4rzCZZgs_UMiNudMx440M=.ce00a309-abf1-4325-9781-65dc0b5c6d59@github.com> Message-ID: On Wed, 3 Dec 2025 10:45:43 GMT, Markus Gr?nlund wrote: >> Greetings, >> >> this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. >> >> To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. >> >> Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. >> >> Testing: jdk_jfr, manual AOT verification, stress testing >> >> Thanks >> Markus > > Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: > > copyright header Nice work! ------------- Marked as reviewed by egahlin (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28505#pullrequestreview-3534470248 From coleenp at openjdk.org Wed Dec 3 13:08:38 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Wed, 3 Dec 2025 13:08:38 GMT Subject: RFR: 8371409: Wrong lock ordering between FullGCALot_lock and =?UTF-8?B?VGhyZWFkc0xvY2tU4oCm?= d0522e9 =?UTF-8?B?4oCmaHJvdHRsZV9sb2NrL01ldGhvZENvbXBpbGVRdWV1ZV9sb2Nr?= Message-ID: This changes the rank of FullGCALot_lock to nosafepoint since it's taken when we want to do FullGCALot when we take safepoint lock so should always be a rank below that. This lock is very limited in what it does - it only protects some memory that we allocate at the bottom/beginning of the heap so that full gc with older collectors has to move stuff. Tested with tier1-4. I wrote a test case where I verified this change but the test case times out, so noreg-hard. ------------- Commit messages: - Remove the test. FullGCALot times out. - 8371409: Wrong lock ordering between FullGCALot_lock and ThreadsLockThrottle_lock/MethodCompileQueue_lock Changes: https://git.openjdk.org/jdk/pull/28633/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28633&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8371409 Stats: 3 lines in 2 files changed: 0 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/28633.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28633/head:pull/28633 PR: https://git.openjdk.org/jdk/pull/28633 From stuefe at openjdk.org Wed Dec 3 13:11:08 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Wed, 3 Dec 2025 13:11:08 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags [v2] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 20:24:06 GMT, Frederic Thevenet wrote: >> This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` >> >> This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). >> >> Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. > > Frederic Thevenet has updated the pull request incrementally with one additional commit since the last revision: > > Removed unnecessary jdk.internal.misc module declaration test/hotspot/jtreg/runtime/CommandLine/PrintAllFlags.java line 71: > 69: } > 70: } > 71: } Possibly shorter code: could you not just collect the Set twice, once for + and once for - UnlockXXX, and then use something Set.equals to assert equality? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/28579#discussion_r2585047002 From coleenp at openjdk.org Wed Dec 3 13:30:44 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Wed, 3 Dec 2025 13:30:44 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v14] In-Reply-To: <2tMUYu-TFZeFFfpE_054SK4rzCZZgs_UMiNudMx440M=.ce00a309-abf1-4325-9781-65dc0b5c6d59@github.com> References: <2tMUYu-TFZeFFfpE_054SK4rzCZZgs_UMiNudMx440M=.ce00a309-abf1-4325-9781-65dc0b5c6d59@github.com> Message-ID: On Wed, 3 Dec 2025 10:45:43 GMT, Markus Gr?nlund wrote: >> Greetings, >> >> this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. >> >> To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. >> >> Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. >> >> Testing: jdk_jfr, manual AOT verification, stress testing >> >> Thanks >> Markus > > Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: > > copyright header Runtime changes look fine. Didn't review the new concurrent hash table. ------------- Marked as reviewed by coleenp (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28505#pullrequestreview-3535046644 From tschatzl at openjdk.org Wed Dec 3 13:39:44 2025 From: tschatzl at openjdk.org (Thomas Schatzl) Date: Wed, 3 Dec 2025 13:39:44 GMT Subject: RFR: 8372179: Remove Unused ConcurrentHashTable::MultiGetHandle In-Reply-To: <3oYw-dGliUDEzEiC_Xrm4f5zjJTmxxYwZyPxDp8i0QU=.aaf67c3d-fe98-4fb0-b148-f2877791ed40@github.com> References: <3oYw-dGliUDEzEiC_Xrm4f5zjJTmxxYwZyPxDp8i0QU=.aaf67c3d-fe98-4fb0-b148-f2877791ed40@github.com> Message-ID: <2MJWsNES8rUusWPja_d4AR4xE1yubXpTw3Uwc2806x8=.9b3f4773-b3ca-4835-90f4-98e908257155@github.com> On Wed, 3 Dec 2025 09:21:52 GMT, Ivan Walulya wrote: >> Hi all, >> >> please review the removal of `ConcurrentHashTable::MultiGetHandle` which is never used anywhere but in gtests. >> >> Testing: gha >> >> Thanks, >> Thomas > > Marked as reviewed by iwalulya (Reviewer). Thanks @walulyai @dholmes-ora for your reviews ------------- PR Comment: https://git.openjdk.org/jdk/pull/28396#issuecomment-3606890424 From tschatzl at openjdk.org Wed Dec 3 13:39:45 2025 From: tschatzl at openjdk.org (Thomas Schatzl) Date: Wed, 3 Dec 2025 13:39:45 GMT Subject: Integrated: 8372179: Remove Unused ConcurrentHashTable::MultiGetHandle In-Reply-To: References: Message-ID: <2N_mU29qZCP_BWOjh4K5-AGd1L6961F2nz3mQURayWU=.b49047a9-b64c-4052-a24d-c9926e287e4f@github.com> On Wed, 19 Nov 2025 15:58:07 GMT, Thomas Schatzl wrote: > Hi all, > > please review the removal of `ConcurrentHashTable::MultiGetHandle` which is never used anywhere but in gtests. > > Testing: gha > > Thanks, > Thomas This pull request has now been integrated. Changeset: 135661b4 Author: Thomas Schatzl URL: https://git.openjdk.org/jdk/commit/135661b4389663b8c2e348d9e61e72cc628636bb Stats: 37 lines in 3 files changed: 0 ins; 34 del; 3 mod 8372179: Remove Unused ConcurrentHashTable::MultiGetHandle Reviewed-by: dholmes, iwalulya ------------- PR: https://git.openjdk.org/jdk/pull/28396 From mgronlun at openjdk.org Wed Dec 3 13:54:07 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Wed, 3 Dec 2025 13:54:07 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v15] In-Reply-To: References: Message-ID: > Greetings, > > this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. > > To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. > > Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. > > Testing: jdk_jfr, manual AOT verification, stress testing > > Thanks > Markus Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: restore AOT modifications ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28505/files - new: https://git.openjdk.org/jdk/pull/28505/files/85bf2d25..601fbc0b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=14 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=13-14 Stats: 23 lines in 3 files changed: 0 ins; 18 del; 5 mod Patch: https://git.openjdk.org/jdk/pull/28505.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28505/head:pull/28505 PR: https://git.openjdk.org/jdk/pull/28505 From mgronlun at openjdk.org Wed Dec 3 14:00:34 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Wed, 3 Dec 2025 14:00:34 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v16] In-Reply-To: References: Message-ID: > Greetings, > > this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. > > To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. > > Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. > > Testing: jdk_jfr, manual AOT verification, stress testing > > Thanks > Markus Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: restore aotClassLocation.cpp ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28505/files - new: https://git.openjdk.org/jdk/pull/28505/files/601fbc0b..0d1461f7 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=15 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28505&range=14-15 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28505.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28505/head:pull/28505 PR: https://git.openjdk.org/jdk/pull/28505 From rehn at openjdk.org Wed Dec 3 14:10:13 2025 From: rehn at openjdk.org (Robbin Ehn) Date: Wed, 3 Dec 2025 14:10:13 GMT Subject: RFR: 8371409: Wrong lock ordering between FullGCALot_lock and =?UTF-8?B?VGhyZWFkc0xvY2tU4oCm?= d0522e9 =?UTF-8?B?4oCmaHJvdHRsZV9sb2NrL01ldGhvZENvbXBpbGVRdWV1ZV9sb2Nr?= In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 12:59:34 GMT, Coleen Phillimore wrote: > This changes the rank of FullGCALot_lock to nosafepoint since it's taken when we want to do FullGCALot when we take safepoint lock so should always be a rank below that. This lock is very limited in what it does - it only protects some memory that we allocate at the bottom/beginning of the heap so that full gc with older collectors has to move stuff. > Tested with tier1-4. I wrote a test case where I verified this change but the test case times out, so noreg-hard. This makes sense, thanks @coleenp ! ------------- Marked as reviewed by rehn (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28633#pullrequestreview-3535241250 From egahlin at openjdk.org Wed Dec 3 14:11:24 2025 From: egahlin at openjdk.org (Erik Gahlin) Date: Wed, 3 Dec 2025 14:11:24 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v16] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 14:00:34 GMT, Markus Gr?nlund wrote: >> Greetings, >> >> this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. >> >> To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. >> >> Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. >> >> Testing: jdk_jfr, manual AOT verification, stress testing >> >> Thanks >> Markus > > Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: > > restore aotClassLocation.cpp Marked as reviewed by egahlin (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28505#pullrequestreview-3535245425 From fthevenet at openjdk.org Wed Dec 3 14:37:26 2025 From: fthevenet at openjdk.org (Frederic Thevenet) Date: Wed, 3 Dec 2025 14:37:26 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags [v3] In-Reply-To: References: Message-ID: <6T4sXvBst-DiSiD7fFdW_cqVVklTUvzxpOPXt2UA6zM=.f3f8c301-8a21-4208-9ab4-c22a395e1e17@github.com> > This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` > > This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). > > Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. Frederic Thevenet has updated the pull request incrementally with one additional commit since the last revision: Reworked the test ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28579/files - new: https://git.openjdk.org/jdk/pull/28579/files/6cdac8e1..3d22c0a2 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28579&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28579&range=01-02 Stats: 42 lines in 1 file changed: 16 ins; 20 del; 6 mod Patch: https://git.openjdk.org/jdk/pull/28579.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28579/head:pull/28579 PR: https://git.openjdk.org/jdk/pull/28579 From fthevenet at openjdk.org Wed Dec 3 14:37:28 2025 From: fthevenet at openjdk.org (Frederic Thevenet) Date: Wed, 3 Dec 2025 14:37:28 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags [v2] In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 20:24:06 GMT, Frederic Thevenet wrote: >> This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` >> >> This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). >> >> Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. > > Frederic Thevenet has updated the pull request incrementally with one additional commit since the last revision: > > Removed unnecessary jdk.internal.misc module declaration @tstuefe I've reworked the test a bit as you suggested. It's not much shorter but it does a better job at conveying the test's logic at a glance, I think. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28579#issuecomment-3607155888 From coleenp at openjdk.org Wed Dec 3 14:46:25 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Wed, 3 Dec 2025 14:46:25 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v16] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 14:00:34 GMT, Markus Gr?nlund wrote: >> Greetings, >> >> this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. >> >> To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. >> >> Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. >> >> Testing: jdk_jfr, manual AOT verification, stress testing >> >> Thanks >> Markus > > Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: > > restore aotClassLocation.cpp Looks good. ------------- Marked as reviewed by coleenp (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28505#pullrequestreview-3535405541 From fthevenet at openjdk.org Wed Dec 3 14:55:06 2025 From: fthevenet at openjdk.org (Frederic Thevenet) Date: Wed, 3 Dec 2025 14:55:06 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags [v4] In-Reply-To: References: Message-ID: > This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` > > This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). > > Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. Frederic Thevenet has updated the pull request incrementally with one additional commit since the last revision: Reworked the test some more ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28579/files - new: https://git.openjdk.org/jdk/pull/28579/files/3d22c0a2..975a7243 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28579&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28579&range=02-03 Stats: 8 lines in 1 file changed: 2 ins; 3 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/28579.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28579/head:pull/28579 PR: https://git.openjdk.org/jdk/pull/28579 From stuefe at openjdk.org Wed Dec 3 14:55:07 2025 From: stuefe at openjdk.org (Thomas Stuefe) Date: Wed, 3 Dec 2025 14:55:07 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags [v4] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 14:51:26 GMT, Frederic Thevenet wrote: >> This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` >> >> This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). >> >> Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. > > Frederic Thevenet has updated the pull request incrementally with one additional commit since the last revision: > > Reworked the test some more Thanks! ------------- Marked as reviewed by stuefe (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28579#pullrequestreview-3535436749 From nbenalla at openjdk.org Wed Dec 3 15:48:23 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Wed, 3 Dec 2025 15:48:23 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v12] In-Reply-To: References: Message-ID: > Get JDK 27 underway. Nizar Benalla 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 24 additional commits since the last revision: - Merge branch 'master' into start-of-release-27 - fix jls 27 link - fix typo and add entry for 27 - Merge branch 'master' into start-of-release-27 - revert changes to avoid conflict - add 27 to the acceptable boot versions - Merge branch 'master' into start-of-release-27 - problem list failing test - Merge branch 'master' into start-of-release-27 - expand start of release documentation - ... and 14 more: https://git.openjdk.org/jdk/compare/0351ed87...444cc1c8 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28130/files - new: https://git.openjdk.org/jdk/pull/28130/files/4bf97a8a..444cc1c8 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=11 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28130&range=10-11 Stats: 819 lines in 34 files changed: 424 ins; 271 del; 124 mod Patch: https://git.openjdk.org/jdk/pull/28130.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28130/head:pull/28130 PR: https://git.openjdk.org/jdk/pull/28130 From darcy at openjdk.org Wed Dec 3 16:36:16 2025 From: darcy at openjdk.org (Joe Darcy) Date: Wed, 3 Dec 2025 16:36:16 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v12] In-Reply-To: References: Message-ID: <14VgrwjksW2UO1LtpHGyX6sTjHbaplRnV7ZgmcyiRIQ=.b06ebf9a-2f95-4e95-89b9-981562ceef06@github.com> On Wed, 3 Dec 2025 15:48:23 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla 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 24 additional commits since the last revision: > > - Merge branch 'master' into start-of-release-27 > - fix jls 27 link > - fix typo and add entry for 27 > - Merge branch 'master' into start-of-release-27 > - revert changes to avoid conflict > - add 27 to the acceptable boot versions > - Merge branch 'master' into start-of-release-27 > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - ... and 14 more: https://git.openjdk.org/jdk/compare/659ebef2...444cc1c8 Marked as reviewed by darcy (Reviewer). Marked as reviewed by darcy (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3535940924 PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3535946905 From liach at openjdk.org Wed Dec 3 16:44:15 2025 From: liach at openjdk.org (Chen Liang) Date: Wed, 3 Dec 2025 16:44:15 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v12] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 15:48:23 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla 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 24 additional commits since the last revision: > > - Merge branch 'master' into start-of-release-27 > - fix jls 27 link > - fix typo and add entry for 27 > - Merge branch 'master' into start-of-release-27 > - revert changes to avoid conflict > - add 27 to the acceptable boot versions > - Merge branch 'master' into start-of-release-27 > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - ... and 14 more: https://git.openjdk.org/jdk/compare/c61f404d...444cc1c8 Marked as reviewed by liach (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3535980615 From iris at openjdk.org Wed Dec 3 16:56:43 2025 From: iris at openjdk.org (Iris Clark) Date: Wed, 3 Dec 2025 16:56:43 GMT Subject: RFR: 8370890: Start of release updates for JDK 27 [v12] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 15:48:23 GMT, Nizar Benalla wrote: >> Get JDK 27 underway. > > Nizar Benalla 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 24 additional commits since the last revision: > > - Merge branch 'master' into start-of-release-27 > - fix jls 27 link > - fix typo and add entry for 27 > - Merge branch 'master' into start-of-release-27 > - revert changes to avoid conflict > - add 27 to the acceptable boot versions > - Merge branch 'master' into start-of-release-27 > - problem list failing test > - Merge branch 'master' into start-of-release-27 > - expand start of release documentation > - ... and 14 more: https://git.openjdk.org/jdk/compare/afcc5cbc...444cc1c8 Marked as reviewed by iris (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28130#pullrequestreview-3536041848 From duke at openjdk.org Wed Dec 3 17:57:31 2025 From: duke at openjdk.org (duke) Date: Wed, 3 Dec 2025 17:57:31 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags [v4] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 14:55:06 GMT, Frederic Thevenet wrote: >> This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` >> >> This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). >> >> Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. > > Frederic Thevenet has updated the pull request incrementally with one additional commit since the last revision: > > Reworked the test some more @fthevenet Your change (at version 975a72433ffccb91ee73746a147ee329dbaec4aa) is now ready to be sponsored by a Committer. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28579#issuecomment-3608092881 From mgronlun at openjdk.org Wed Dec 3 18:16:28 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Wed, 3 Dec 2025 18:16:28 GMT Subject: RFR: 8365400: Enhance JFR to emit file and module metadata for class loading [v16] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 14:08:23 GMT, Erik Gahlin wrote: >> Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: >> >> restore aotClassLocation.cpp > > Marked as reviewed by egahlin (Reviewer). Thanks @egahlin and @coleenp for your reviews! ------------- PR Comment: https://git.openjdk.org/jdk/pull/28505#issuecomment-3608156678 From mgronlun at openjdk.org Wed Dec 3 18:16:31 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Wed, 3 Dec 2025 18:16:31 GMT Subject: Integrated: 8365400: Enhance JFR to emit file and module metadata for class loading In-Reply-To: References: Message-ID: On Wed, 26 Nov 2025 12:10:55 GMT, Markus Gr?nlund wrote: > Greetings, > > this enhancement adds a "source" field, label "Source" to the jdk.ClassDefine event. > > To enable this functionality, JFR needs a concurrent symbol table. We can build a simpler version of a concurrent hash table, taking advantage of the JFR epoch system. This will be useful also for planned future enhancements. > > Extensions are made to AOT to consistently report identical canonical paths for classes as non-AOT code paths. > > Testing: jdk_jfr, manual AOT verification, stress testing > > Thanks > Markus This pull request has now been integrated. Changeset: e93b10d0 Author: Markus Gr?nlund URL: https://git.openjdk.org/jdk/commit/e93b10d08456f720e303771a882e79660911e1eb Stats: 1372 lines in 33 files changed: 1035 ins; 162 del; 175 mod 8365400: Enhance JFR to emit file and module metadata for class loading Reviewed-by: coleenp, egahlin ------------- PR: https://git.openjdk.org/jdk/pull/28505 From pchilanomate at openjdk.org Wed Dec 3 18:33:32 2025 From: pchilanomate at openjdk.org (Patricio Chilano Mateo) Date: Wed, 3 Dec 2025 18:33:32 GMT Subject: RFR: 8360702: runtime/Thread/AsyncExceptionTest.java timed out [v4] In-Reply-To: References: Message-ID: > Please review this small test fix. To make sure the worker thread receives the async exception at a safe place, we should avoid using synchronization objects where the worker thread might need to unpark the main thread. Otherwise, if the main thread is virtual, the async exception might be set while the worker is still executing FJP code. See JBS comments for more detail. > > I fixed test AsyncExceptionOnMonitorEnter.java too and removed it from test/hotspot/jtreg/ProblemList-Virtual.txt. The alternative was to problem list AsyncExceptionTest.java, but I think it?s better if we can just keep the tests for this mode too. > > Thanks, > Patricio Patricio Chilano Mateo has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains six commits: - use int - Merge branch 'master' into JDK-8360702 - Remove extra space - Remove finally block - David's comments - v1 ------------- Changes: https://git.openjdk.org/jdk/pull/27582/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27582&range=03 Stats: 51 lines in 2 files changed: 20 ins; 18 del; 13 mod Patch: https://git.openjdk.org/jdk/pull/27582.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/27582/head:pull/27582 PR: https://git.openjdk.org/jdk/pull/27582 From pchilanomate at openjdk.org Wed Dec 3 18:33:35 2025 From: pchilanomate at openjdk.org (Patricio Chilano Mateo) Date: Wed, 3 Dec 2025 18:33:35 GMT Subject: RFR: 8360702: runtime/Thread/AsyncExceptionTest.java timed out [v3] In-Reply-To: References: Message-ID: On Fri, 3 Oct 2025 15:02:47 GMT, Patricio Chilano Mateo wrote: >> Please review this small test fix. To make sure the worker thread receives the async exception at a safe place, we should avoid using synchronization objects where the worker thread might need to unpark the main thread. Otherwise, if the main thread is virtual, the async exception might be set while the worker is still executing FJP code. See JBS comments for more detail. >> >> I fixed test AsyncExceptionOnMonitorEnter.java too and removed it from test/hotspot/jtreg/ProblemList-Virtual.txt. The alternative was to problem list AsyncExceptionTest.java, but I think it?s better if we can just keep the tests for this mode too. >> >> Thanks, >> Patricio > > Patricio Chilano Mateo has updated the pull request incrementally with two additional commits since the last revision: > > - Remove extra space > - Remove finally block I've made a small update to the test to avoid the issue found in JDK-8371081. ------------- PR Comment: https://git.openjdk.org/jdk/pull/27582#issuecomment-3608247106 From sspitsyn at openjdk.org Wed Dec 3 19:05:55 2025 From: sspitsyn at openjdk.org (Serguei Spitsyn) Date: Wed, 3 Dec 2025 19:05:55 GMT Subject: RFR: 8372769: Test runtime/handshake/HandshakeDirectTest.java failed - JVM TI ERROR 13 Message-ID: Please, review a simple correction of the test issue. The test method `suspendThread()` does not throw an exception if JVMTI `SuspendThread` returns `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. So these two error codes are accepted as valid. JVMTI `SuspendThread` does not suspend the target thread in such a case, so JVMTI `ResumeThread` can return the JVMTI_ERROR_THREAD_NOT_SUSPENDED (13). The fix is to skip call to JVMTI `ResumeThread` if JVMTI `SuspendThread` returned `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. Testing: This problem is hard to reproduce, but I was able to reproduce it with a JVMTI hack. The fixed test does not fail anymore. ------------- Commit messages: - 8372769: Test runtime/handshake/HandshakeDirectTest.java failed - JVMTI ERROR 13wq Changes: https://git.openjdk.org/jdk/pull/28643/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28643&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8372769 Stats: 8 lines in 1 file changed: 5 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/28643.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28643/head:pull/28643 PR: https://git.openjdk.org/jdk/pull/28643 From lmesnik at openjdk.org Wed Dec 3 19:05:55 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Wed, 3 Dec 2025 19:05:55 GMT Subject: RFR: 8372769: Test runtime/handshake/HandshakeDirectTest.java failed - JVM TI ERROR 13 In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 18:56:46 GMT, Serguei Spitsyn wrote: > Please, review a simple correction of the test issue. > The test method `suspendThread()` does not throw an exception if JVMTI `SuspendThread` returns `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. So these two error codes are accepted as valid. JVMTI `SuspendThread` does not suspend the target thread in such a case, so JVMTI `ResumeThread` can return the JVMTI_ERROR_THREAD_NOT_SUSPENDED (13). > > The fix is to skip call to JVMTI `ResumeThread` if JVMTI `SuspendThread` returned `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. > > Testing: > This problem is hard to reproduce, but I was able to reproduce it with a JVMTI hack. The fixed test does not fail anymore. Thanks for fixing this. ------------- Marked as reviewed by lmesnik (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28643#pullrequestreview-3536494601 From pchilanomate at openjdk.org Wed Dec 3 19:31:16 2025 From: pchilanomate at openjdk.org (Patricio Chilano Mateo) Date: Wed, 3 Dec 2025 19:31:16 GMT Subject: RFR: 8372769: Test runtime/handshake/HandshakeDirectTest.java failed - JVMTI ERROR 13 In-Reply-To: References: Message-ID: <8Z8ntwvqpGN8LPFWbPAJ5CNbGW-VhyTzX57-Sw17goE=.a87f44a8-3279-46e8-8120-9a32c85197ed@github.com> On Wed, 3 Dec 2025 18:56:46 GMT, Serguei Spitsyn wrote: > Please, review a simple correction of the test issue. > The test method `suspendThread()` does not throw an exception if JVMTI `SuspendThread` returns `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. So these two error codes are accepted as valid. JVMTI `SuspendThread` does not suspend the target thread in such a case, so JVMTI `ResumeThread` can return the JVMTI_ERROR_THREAD_NOT_SUSPENDED (13). > > The fix is to skip call to JVMTI `ResumeThread` if JVMTI `SuspendThread` returned `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. > > Testing: > - This problem is hard to reproduce, but I was able to reproduce it with a JVMTI hack. The fixed test does not fail anymore. > - In progress: mach5 tiers 1-4 (to be safe) Looks good to me. ------------- Marked as reviewed by pchilanomate (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28643#pullrequestreview-3536598832 From enikitin at openjdk.org Wed Dec 3 19:31:24 2025 From: enikitin at openjdk.org (Evgeny Nikitin) Date: Wed, 3 Dec 2025 19:31:24 GMT Subject: RFR: 8373049: Update JCStress test suite Message-ID: The new, updated version of Jcstress. Testing: the whole suite run, no new issues found. ------------- Commit messages: - 8373049: Update JCStress test suite Changes: https://git.openjdk.org/jdk/pull/28644/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28644&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8373049 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28644.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28644/head:pull/28644 PR: https://git.openjdk.org/jdk/pull/28644 From epavlova at openjdk.org Wed Dec 3 19:34:14 2025 From: epavlova at openjdk.org (Ekaterina Pavlova) Date: Wed, 3 Dec 2025 19:34:14 GMT Subject: RFR: 8373049: Update JCStress test suite In-Reply-To: References: Message-ID: <7Rz8ncGU8ZKzrY444YUjDVnb15jaYCnL7FcZvobadiU=.77200811-137d-4bd6-8a89-573f9e6461e7@github.com> On Wed, 3 Dec 2025 19:24:12 GMT, Evgeny Nikitin wrote: > The new, updated version of Jcstress. > > Testing: the whole suite run, no new issues found. Look good, Did testing pass? ------------- PR Comment: https://git.openjdk.org/jdk/pull/28644#issuecomment-3608502967 From cjplummer at openjdk.org Wed Dec 3 19:38:04 2025 From: cjplummer at openjdk.org (Chris Plummer) Date: Wed, 3 Dec 2025 19:38:04 GMT Subject: RFR: 8372769: Test runtime/handshake/HandshakeDirectTest.java failed - JVMTI ERROR 13 In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 18:56:46 GMT, Serguei Spitsyn wrote: > Please, review a simple correction of the test issue. > The test method `suspendThread()` does not throw an exception if JVMTI `SuspendThread` returns `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. So these two error codes are accepted as valid. JVMTI `SuspendThread` does not suspend the target thread in such a case, so JVMTI `ResumeThread` can return the JVMTI_ERROR_THREAD_NOT_SUSPENDED (13). > > The fix is to skip call to JVMTI `ResumeThread` if JVMTI `SuspendThread` returned `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. > > Testing: > - This problem is hard to reproduce, but I was able to reproduce it with a JVMTI hack. The fixed test does not fail anymore. > - In progress: mach5 tiers 1-4 (to be safe) Marked as reviewed by cjplummer (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28643#pullrequestreview-3536617433 From amenkov at openjdk.org Wed Dec 3 19:38:05 2025 From: amenkov at openjdk.org (Alex Menkov) Date: Wed, 3 Dec 2025 19:38:05 GMT Subject: RFR: 8372769: Test runtime/handshake/HandshakeDirectTest.java failed - JVMTI ERROR 13 In-Reply-To: References: Message-ID: <97mGHzNKBUKXjAkZ0FjaHpBbezKzx9nYhL2_RvpsHok=.bb3fbed0-9112-48d3-a01c-9f915fc21758@github.com> On Wed, 3 Dec 2025 18:56:46 GMT, Serguei Spitsyn wrote: > Please, review a simple correction of the test issue. > The test method `suspendThread()` does not throw an exception if JVMTI `SuspendThread` returns `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. So these two error codes are accepted as valid. JVMTI `SuspendThread` does not suspend the target thread in such a case, so JVMTI `ResumeThread` can return the JVMTI_ERROR_THREAD_NOT_SUSPENDED (13). > > The fix is to skip call to JVMTI `ResumeThread` if JVMTI `SuspendThread` returned `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. > > Testing: > - This problem is hard to reproduce, but I was able to reproduce it with a JVMTI hack. The fixed test does not fail anymore. > - In progress: mach5 tiers 1-4 (to be safe) Marked as reviewed by amenkov (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28643#pullrequestreview-3536619369 From sspitsyn at openjdk.org Wed Dec 3 19:43:54 2025 From: sspitsyn at openjdk.org (Serguei Spitsyn) Date: Wed, 3 Dec 2025 19:43:54 GMT Subject: RFR: 8372769: Test runtime/handshake/HandshakeDirectTest.java failed - JVMTI ERROR 13 In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 18:56:46 GMT, Serguei Spitsyn wrote: > Please, review a simple correction of the test issue. > The test method `suspendThread()` does not throw an exception if JVMTI `SuspendThread` returns `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. So these two error codes are accepted as valid. JVMTI `SuspendThread` does not suspend the target thread in such a case, so JVMTI `ResumeThread` can return the JVMTI_ERROR_THREAD_NOT_SUSPENDED (13). > > The fix is to skip call to JVMTI `ResumeThread` if JVMTI `SuspendThread` returned `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. > > Testing: > - This problem is hard to reproduce, but I was able to reproduce it with a JVMTI hack. The fixed test does not fail anymore. > - In progress: mach5 tiers 1-4 (to be safe) Thank you for reviews! ------------- PR Comment: https://git.openjdk.org/jdk/pull/28643#issuecomment-3608534405 From enikitin at openjdk.org Wed Dec 3 20:15:16 2025 From: enikitin at openjdk.org (Evgeny Nikitin) Date: Wed, 3 Dec 2025 20:15:16 GMT Subject: RFR: 8373049: Update JCStress test suite In-Reply-To: <7Rz8ncGU8ZKzrY444YUjDVnb15jaYCnL7FcZvobadiU=.77200811-137d-4bd6-8a89-573f9e6461e7@github.com> References: <7Rz8ncGU8ZKzrY444YUjDVnb15jaYCnL7FcZvobadiU=.77200811-137d-4bd6-8a89-573f9e6461e7@github.com> Message-ID: On Wed, 3 Dec 2025 19:31:17 GMT, Ekaterina Pavlova wrote: > Look good, Did testing pass? Yep. One test failed (the coherence.java), but it fails with the current version as well. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28644#issuecomment-3608651023 From epavlova at openjdk.org Wed Dec 3 20:19:20 2025 From: epavlova at openjdk.org (Ekaterina Pavlova) Date: Wed, 3 Dec 2025 20:19:20 GMT Subject: RFR: 8373049: Update JCStress test suite In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 19:24:12 GMT, Evgeny Nikitin wrote: > The new, updated version of Jcstress. > > Testing: the whole suite run, no new issues found. Marked as reviewed by epavlova (Committer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28644#pullrequestreview-3536758080 From coleenp at openjdk.org Wed Dec 3 20:26:07 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Wed, 3 Dec 2025 20:26:07 GMT Subject: RFR: 8371409: Wrong lock ordering between FullGCALot_lock and ThreadsLockThrottle_lock/MethodCompileQueue_lock In-Reply-To: References: Message-ID: <1bCVVX5o7gub6mn7Psc9ElURUSGLz4tWT3W_abygRmY=.513c8538-4bc1-4b1c-81a5-744c6aefb853@github.com> On Wed, 3 Dec 2025 12:59:34 GMT, Coleen Phillimore wrote: > This changes the rank of FullGCALot_lock to nosafepoint since it's taken when we want to do FullGCALot when we take safepoint lock so should always be a rank below that. This lock is very limited in what it does - it only protects some memory that we allocate at the bottom/beginning of the heap so that full gc with older collectors has to move stuff. > Tested with tier1-4. I wrote a test case where I verified this change but the test case times out, so noreg-hard. Thanks Robbin and thank you for reporting it. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28633#issuecomment-3608694460 From dholmes at openjdk.org Wed Dec 3 21:35:02 2025 From: dholmes at openjdk.org (David Holmes) Date: Wed, 3 Dec 2025 21:35:02 GMT Subject: RFR: 8360702: runtime/Thread/AsyncExceptionTest.java timed out [v3] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 18:30:57 GMT, Patricio Chilano Mateo wrote: >> Patricio Chilano Mateo has updated the pull request incrementally with two additional commits since the last revision: >> >> - Remove extra space >> - Remove finally block > > I've made a small update to the test to avoid the issue found in JDK-8371081. @pchilano I don't think you meant to commit the ProblemList-Virtual.txt update ------------- PR Comment: https://git.openjdk.org/jdk/pull/27582#issuecomment-3608923866 From lmesnik at openjdk.org Wed Dec 3 21:49:57 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Wed, 3 Dec 2025 21:49:57 GMT Subject: RFR: 8373049: Update JCStress test suite In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 19:24:12 GMT, Evgeny Nikitin wrote: > The new, updated version of Jcstress. > > Testing: the whole suite run, no new issues found. Marked as reviewed by lmesnik (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28644#pullrequestreview-3537055064 From duke at openjdk.org Wed Dec 3 21:49:58 2025 From: duke at openjdk.org (duke) Date: Wed, 3 Dec 2025 21:49:58 GMT Subject: RFR: 8373049: Update JCStress test suite In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 19:24:12 GMT, Evgeny Nikitin wrote: > The new, updated version of Jcstress. > > Testing: the whole suite run, no new issues found. @lepestock Your change (at version 3783cfa4484e0e33559fb0be6122016bcf96b3ec) is now ready to be sponsored by a Committer. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28644#issuecomment-3608979413 From lmesnik at openjdk.org Wed Dec 3 22:00:55 2025 From: lmesnik at openjdk.org (Leonid Mesnik) Date: Wed, 3 Dec 2025 22:00:55 GMT Subject: RFR: 8373049: Update JCStress test suite In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 19:24:12 GMT, Evgeny Nikitin wrote: > The new, updated version of Jcstress. > > Testing: the whole suite run, no new issues found. Sorry, haven't mention explicitly, that the fix is trivial. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28644#issuecomment-3609013248 From enikitin at openjdk.org Wed Dec 3 22:00:56 2025 From: enikitin at openjdk.org (Evgeny Nikitin) Date: Wed, 3 Dec 2025 22:00:56 GMT Subject: Integrated: 8373049: Update JCStress test suite In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 19:24:12 GMT, Evgeny Nikitin wrote: > The new, updated version of Jcstress. > > Testing: the whole suite run, no new issues found. This pull request has now been integrated. Changeset: 9b386014 Author: Evgeny Nikitin Committer: Leonid Mesnik URL: https://git.openjdk.org/jdk/commit/9b386014a01b2bff47856bf9a8e113317db1f081 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod 8373049: Update JCStress test suite Reviewed-by: epavlova, lmesnik ------------- PR: https://git.openjdk.org/jdk/pull/28644 From pchilanomate at openjdk.org Wed Dec 3 22:45:03 2025 From: pchilanomate at openjdk.org (Patricio Chilano Mateo) Date: Wed, 3 Dec 2025 22:45:03 GMT Subject: RFR: 8371409: Wrong lock ordering between FullGCALot_lock and ThreadsLockThrottle_lock/MethodCompileQueue_lock In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 12:59:34 GMT, Coleen Phillimore wrote: > This changes the rank of FullGCALot_lock to nosafepoint since it's taken when we want to do FullGCALot when we take safepoint lock so should always be a rank below that. This lock is very limited in what it does - it only protects some memory that we allocate at the bottom/beginning of the heap so that full gc with older collectors has to move stuff. > Tested with tier1-4. I wrote a test case where I verified this change but the test case times out, so noreg-hard. LGTM! ------------- Marked as reviewed by pchilanomate (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28633#pullrequestreview-3537224047 From sspitsyn at openjdk.org Wed Dec 3 22:46:16 2025 From: sspitsyn at openjdk.org (Serguei Spitsyn) Date: Wed, 3 Dec 2025 22:46:16 GMT Subject: Integrated: 8372769: Test runtime/handshake/HandshakeDirectTest.java failed - JVMTI ERROR 13 In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 18:56:46 GMT, Serguei Spitsyn wrote: > Please, review a simple correction of the test issue. > The test method `suspendThread()` does not throw an exception if JVMTI `SuspendThread` returns `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. So these two error codes are accepted as valid. JVMTI `SuspendThread` does not suspend the target thread in such a case, so JVMTI `ResumeThread` can return the JVMTI_ERROR_THREAD_NOT_SUSPENDED (13). > > The fix is to skip call to JVMTI `ResumeThread` if JVMTI `SuspendThread` returned `JVMTI_ERROR_THREAD_NOT_ALIVE` or `JVMTI_ERROR_WRONG_PHASE`. > > Testing: > - This problem is hard to reproduce, but I was able to reproduce it with a JVMTI hack. The fixed test does not fail anymore. > - In progress: mach5 tiers 1-4 (to be safe) This pull request has now been integrated. Changeset: 1294d55b Author: Serguei Spitsyn URL: https://git.openjdk.org/jdk/commit/1294d55b194704dce92c5132d6779e6f4d4850e6 Stats: 8 lines in 1 file changed: 5 ins; 0 del; 3 mod 8372769: Test runtime/handshake/HandshakeDirectTest.java failed - JVMTI ERROR 13 Reviewed-by: lmesnik, pchilanomate, cjplummer, amenkov ------------- PR: https://git.openjdk.org/jdk/pull/28643 From pchilanomate at openjdk.org Wed Dec 3 23:14:35 2025 From: pchilanomate at openjdk.org (Patricio Chilano Mateo) Date: Wed, 3 Dec 2025 23:14:35 GMT Subject: RFR: 8360702: runtime/Thread/AsyncExceptionTest.java timed out [v5] In-Reply-To: References: Message-ID: <4Sq_pT8rOD2Ru-UJRtnd9zQPYnb7vhNm66dX7XMo3tM=.f0c35346-a8cf-4b57-8f3d-18a4db3a73c0@github.com> > Please review this small test fix. To make sure the worker thread receives the async exception at a safe place, we should avoid using synchronization objects where the worker thread might need to unpark the main thread. Otherwise, if the main thread is virtual, the async exception might be set while the worker is still executing FJP code. See JBS comments for more detail. > > I fixed test AsyncExceptionOnMonitorEnter.java too and removed it from test/hotspot/jtreg/ProblemList-Virtual.txt. The alternative was to problem list AsyncExceptionTest.java, but I think it?s better if we can just keep the tests for this mode too. > > Thanks, > Patricio Patricio Chilano Mateo has updated the pull request incrementally with one additional commit since the last revision: remove test.thread.factory requirement ------------- Changes: - all: https://git.openjdk.org/jdk/pull/27582/files - new: https://git.openjdk.org/jdk/pull/27582/files/c4e5a9ac..c174861e Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=27582&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=27582&range=03-04 Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/27582.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/27582/head:pull/27582 PR: https://git.openjdk.org/jdk/pull/27582 From pchilanomate at openjdk.org Wed Dec 3 23:14:37 2025 From: pchilanomate at openjdk.org (Patricio Chilano Mateo) Date: Wed, 3 Dec 2025 23:14:37 GMT Subject: RFR: 8360702: runtime/Thread/AsyncExceptionTest.java timed out [v3] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 18:30:57 GMT, Patricio Chilano Mateo wrote: >> Patricio Chilano Mateo has updated the pull request incrementally with two additional commits since the last revision: >> >> - Remove extra space >> - Remove finally block > > I've made a small update to the test to avoid the issue found in JDK-8371081. > @pchilano I don't think you meant to commit the ProblemList-Virtual.txt update > You mean the `@require` added in 8348844, right? Yes, removed now. ------------- PR Comment: https://git.openjdk.org/jdk/pull/27582#issuecomment-3609219936 From sspitsyn at openjdk.org Thu Dec 4 00:34:06 2025 From: sspitsyn at openjdk.org (Serguei Spitsyn) Date: Thu, 4 Dec 2025 00:34:06 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v8] In-Reply-To: <7hs5qoZhrBxXH6kJ1uowTEWZEFU_5Bt3V14p5ATcoeg=.cd08c1ce-886a-4a0f-9222-3bdec6c0ba96@github.com> References: <7hs5qoZhrBxXH6kJ1uowTEWZEFU_5Bt3V14p5ATcoeg=.cd08c1ce-886a-4a0f-9222-3bdec6c0ba96@github.com> Message-ID: On Wed, 3 Dec 2025 07:22:51 GMT, Sergey Chernyshev wrote: >> Hi all, >> >> I would like to propose a fix for JDK-8319589. This will allow jcmd and jps running as root to get the complete list of JVMs running by all users, and to attach from root to non-root JVMs. Previously, JDK-8197387 introduced the same possibility on Linux. >> >> This change affects macOS, that uses "secure" per-user temporary directories. It only affects JVMs running as root, the behavior in non-privileged JVMs remains unchanged. >> >> Jcmd and jps rely on LocalVmManager to get the initial list of the local VMs. The LocalVmManager uses sun.jvmstat.PlatformSupport to get the list of temp directories, where it searches for user's PerfData directory such as "hsperfdata_". In macosx the temp directories are per-user, the temp path is returned by confstr(_CS_DARWIN_USER_TEMP_DIR). The per-user directories are mode 700 and so they are read-protected from non-privileged users and can be accessed by the owner and the root. >> >> Both jps and jcmd (HotSpotAttachProvider) create MonitoredVm objects, that have PerfDataBuffer that performs attachment to the target. Only the attachable VMs are listed in jcmd output. >> >> The proposed patch changes the list of directories returned by the PlatformSupport#getTemporaryDirectories() in VMs running as root. The list is later used in VirtualMachineImpl (jdk.attach). It changes also the way mmap_attach_shared() searches for hsperfdata_/ files to map the shared memory. Mmap_attach_shared() and VirtualMachineImpl (via PlatformSupport) list the content of /var/folders, where the temp directories are located, more specificly the temp directories are /var/folders///T as hinted in [1]. The full list is returned by newly added PlatformSupportImpl#getTemporaryDirectories(). >> >> The attaching client's VirtualMachineImpl needs the target process's temp directory to find .java and create .attach files. It uses the list returned by PlatformSupportImpl#getTemporaryDirectories() and the ProcessHandle of the target process to search for user's PerfData directory, e.g. hsperfdata_, which is in the target process's temp directory, exactly where it expects to see the .java in return on sending SIGQUIT to the target VM. >> >> Mmap_attach_shared() traverses the /var/folders in get_user_tmp_dir() and looks for a hsperfdata_ folder. If that folder is found in /var/folders/*/*/T, that means the temp folder corresponds to the and to t... > > Sergey Chernyshev has updated the pull request incrementally with one additional commit since the last revision: > > addressed review comments We had a private discussion with Larry on this PR and undesired dependency on the `sun.jvmstat` module. We got the following concerns: - Do we really need 3x implementations of the MacOS `tempdir` finder function? - Do we really need a modular dependency from `jdk.attach` to `jdk.internal.jvmstat`? ------------- PR Comment: https://git.openjdk.org/jdk/pull/25824#issuecomment-3609399390 From duke at openjdk.org Thu Dec 4 01:18:00 2025 From: duke at openjdk.org (jonghoonpark) Date: Thu, 4 Dec 2025 01:18:00 GMT Subject: RFR: 8367717: Cleanup atomic_copy64 [v2] In-Reply-To: References: <3lRD_DjxK4NQqosh-I9RkndecicN7Yp64Hr_h9_Ixpg=.ca230216-7910-4d46-bc94-f2d1ce01c726@github.com> Message-ID: On Mon, 6 Oct 2025 09:38:24 GMT, jonghoonpark wrote: >> related jira issue: https://bugs.openjdk.org/browse/JDK-8367717 >> >> ## Changes >> - deleted all definitions of atomic_copy64 >> - replaced all calls to `atomic_copy64` with `AtomicAccess::store(dst, AtomicAccess::load(src))` >> >> ## Verification >> - Verified by running: >> - `make run-test TEST="gtest:StubRoutines*"` >> - `make run-test TEST="gtest:AtomicAccess*"` >> >> Please let me know if there are any additional or more appropriate verification steps I should perform. > > jonghoonpark has updated the pull request incrementally with one additional commit since the last revision: > > cleanup: align to use AtomicAccess > > Signed-off-by: jonghoonpark The discussion seems unresolved, so I?ll convert this PR back to draft for now. ------------- PR Comment: https://git.openjdk.org/jdk/pull/27642#issuecomment-3609496095 From dholmes at openjdk.org Thu Dec 4 01:55:56 2025 From: dholmes at openjdk.org (David Holmes) Date: Thu, 4 Dec 2025 01:55:56 GMT Subject: RFR: 8360702: runtime/Thread/AsyncExceptionTest.java timed out [v5] In-Reply-To: <4Sq_pT8rOD2Ru-UJRtnd9zQPYnb7vhNm66dX7XMo3tM=.f0c35346-a8cf-4b57-8f3d-18a4db3a73c0@github.com> References: <4Sq_pT8rOD2Ru-UJRtnd9zQPYnb7vhNm66dX7XMo3tM=.f0c35346-a8cf-4b57-8f3d-18a4db3a73c0@github.com> Message-ID: On Wed, 3 Dec 2025 23:14:35 GMT, Patricio Chilano Mateo wrote: >> Please review this small test fix. To make sure the worker thread receives the async exception at a safe place, we should avoid using synchronization objects where the worker thread might need to unpark the main thread. Otherwise, if the main thread is virtual, the async exception might be set while the worker is still executing FJP code. See JBS comments for more detail. >> >> I fixed test AsyncExceptionOnMonitorEnter.java too and removed it from test/hotspot/jtreg/ProblemList-Virtual.txt. The alternative was to problem list AsyncExceptionTest.java, but I think it?s better if we can just keep the tests for this mode too. >> >> Thanks, >> Patricio > > Patricio Chilano Mateo has updated the pull request incrementally with one additional commit since the last revision: > > remove test.thread.factory requirement Looks good. Thanks ------------- Marked as reviewed by dholmes (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/27582#pullrequestreview-3537568876 From dholmes at openjdk.org Thu Dec 4 01:55:57 2025 From: dholmes at openjdk.org (David Holmes) Date: Thu, 4 Dec 2025 01:55:57 GMT Subject: RFR: 8360702: runtime/Thread/AsyncExceptionTest.java timed out [v3] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 23:10:36 GMT, Patricio Chilano Mateo wrote: > > @pchilano I don't think you meant to commit the ProblemList-Virtual.txt update > > You mean the `@require` added in 8348844, right? Yes, removed now. No, when I looked at "commits since you last reviewed" git showed me changes to the ProblemList-Virtual.txt file that seemed unrelated to this change. But now looking at the individual commits I can't see it. ------------- PR Comment: https://git.openjdk.org/jdk/pull/27582#issuecomment-3609619999 From dholmes at openjdk.org Thu Dec 4 08:26:17 2025 From: dholmes at openjdk.org (David Holmes) Date: Thu, 4 Dec 2025 08:26:17 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags [v4] In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 14:55:06 GMT, Frederic Thevenet wrote: >> This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` >> >> This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). >> >> Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. > > Frederic Thevenet has updated the pull request incrementally with one additional commit since the last revision: > > Reworked the test some more Update looks fine. ------------- Marked as reviewed by dholmes (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/28579#pullrequestreview-3538681002 From fthevenet at openjdk.org Thu Dec 4 08:26:19 2025 From: fthevenet at openjdk.org (Frederic Thevenet) Date: Thu, 4 Dec 2025 08:26:19 GMT Subject: Integrated: 8372802: PrintFlagsFinal should also print locked flags In-Reply-To: References: Message-ID: On Mon, 1 Dec 2025 14:56:54 GMT, Frederic Thevenet wrote: > This change aims to provide a way to print all flags including "locked" ones (e.g. Diagnostic and Experimental) without having to explicitly set `+UnlockExperimentalVMOptions` or `+UnlockDiagnosticVMOptions` > > This applies to the following VM options: `PrintFlagsFinal` , `PrintFlagsRanges`, `PrintFlagsInitial`, `PrintFlagsWithComments`, `-XprintFlags`, as well as the `PrintVMFlagsDCmd` diagnostic command (when set to show all flags). > > Places that print out only flags that have been changed (i.e. that skip flags with default values), like when during the generation of hs_err reports, are not affected by this. This pull request has now been integrated. Changeset: 771253e2 Author: Frederic Thevenet Committer: David Holmes URL: https://git.openjdk.org/jdk/commit/771253e285c48329a9b45dfaaa852b64e74b31d4 Stats: 70 lines in 2 files changed: 69 ins; 0 del; 1 mod 8372802: PrintFlagsFinal should also print locked flags Reviewed-by: dholmes, stuefe, lmesnik ------------- PR: https://git.openjdk.org/jdk/pull/28579 From fthevenet at openjdk.org Thu Dec 4 09:20:21 2025 From: fthevenet at openjdk.org (Frederic Thevenet) Date: Thu, 4 Dec 2025 09:20:21 GMT Subject: RFR: 8372802: PrintFlagsFinal should also print locked flags [v4] In-Reply-To: References: Message-ID: On Thu, 4 Dec 2025 08:21:45 GMT, David Holmes wrote: >> Frederic Thevenet has updated the pull request incrementally with one additional commit since the last revision: >> >> Reworked the test some more > > Update looks fine. Thanks, @dholmes-ora ------------- PR Comment: https://git.openjdk.org/jdk/pull/28579#issuecomment-3611039355 From mgronlun at openjdk.org Thu Dec 4 10:45:25 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Thu, 4 Dec 2025 10:45:25 GMT Subject: RFR: 8373062: JFR build failure with CDS disabled [v3] In-Reply-To: References: Message-ID: > Greetings, > > [JDK-8365400](https://bugs.openjdk.org/browse/JDK-8365400) caused a build problem when passing build option "--disable-cds" because of missing conditionals. > > Testing: manually building with "--disable-cds" > > Thanks > Markus Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: apa ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28656/files - new: https://git.openjdk.org/jdk/pull/28656/files/369297f5..0e8612c7 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28656&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28656&range=01-02 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/28656.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28656/head:pull/28656 PR: https://git.openjdk.org/jdk/pull/28656 From egahlin at openjdk.org Thu Dec 4 10:45:26 2025 From: egahlin at openjdk.org (Erik Gahlin) Date: Thu, 4 Dec 2025 10:45:26 GMT Subject: RFR: 8373062: JFR build failure with CDS disabled [v3] In-Reply-To: References: Message-ID: On Thu, 4 Dec 2025 10:42:56 GMT, Markus Gr?nlund wrote: >> Greetings, >> >> [JDK-8365400](https://bugs.openjdk.org/browse/JDK-8365400) caused a build problem when passing build option "--disable-cds" because of missing conditionals. >> >> Testing: manually building with "--disable-cds" >> >> Thanks >> Markus > > Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: > > apa Marked as reviewed by egahlin (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/28656#pullrequestreview-3539289435 From mgronlun at openjdk.org Thu Dec 4 12:27:53 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Thu, 4 Dec 2025 12:27:53 GMT Subject: RFR: 8373062: JFR build failure with CDS disabled [v3] In-Reply-To: References: Message-ID: On Thu, 4 Dec 2025 10:42:01 GMT, Erik Gahlin wrote: >> Markus Gr?nlund has updated the pull request incrementally with one additional commit since the last revision: >> >> apa > > Marked as reviewed by egahlin (Reviewer). Thanks @egahlin for the review. I am going to to proceed with integration to ensure no build issues remain for RDP1. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28656#issuecomment-3611987285 From mgronlun at openjdk.org Thu Dec 4 12:27:55 2025 From: mgronlun at openjdk.org (Markus =?UTF-8?B?R3LDtm5sdW5k?=) Date: Thu, 4 Dec 2025 12:27:55 GMT Subject: Integrated: 8373062: JFR build failure with CDS disabled In-Reply-To: References: Message-ID: <50F7UB-iOcEhzjtgSeuYCHLBtS0EMmTNqZs_2wTM9Hs=.5a87c2be-06d6-4719-9285-1d6487016dee@github.com> On Thu, 4 Dec 2025 10:09:50 GMT, Markus Gr?nlund wrote: > Greetings, > > [JDK-8365400](https://bugs.openjdk.org/browse/JDK-8365400) caused a build problem when passing build option "--disable-cds" because of missing conditionals. > > Testing: manually building with "--disable-cds" > > Thanks > Markus This pull request has now been integrated. Changeset: bcbdf90f Author: Markus Gr?nlund URL: https://git.openjdk.org/jdk/commit/bcbdf90fce44ad87e7728ba0febef0951e361589 Stats: 29 lines in 5 files changed: 16 ins; 11 del; 2 mod 8373062: JFR build failure with CDS disabled Reviewed-by: egahlin ------------- PR: https://git.openjdk.org/jdk/pull/28656 From pchilanomate at openjdk.org Thu Dec 4 14:34:34 2025 From: pchilanomate at openjdk.org (Patricio Chilano Mateo) Date: Thu, 4 Dec 2025 14:34:34 GMT Subject: RFR: 8360702: runtime/Thread/AsyncExceptionTest.java timed out [v5] In-Reply-To: <4Sq_pT8rOD2Ru-UJRtnd9zQPYnb7vhNm66dX7XMo3tM=.f0c35346-a8cf-4b57-8f3d-18a4db3a73c0@github.com> References: <4Sq_pT8rOD2Ru-UJRtnd9zQPYnb7vhNm66dX7XMo3tM=.f0c35346-a8cf-4b57-8f3d-18a4db3a73c0@github.com> Message-ID: <2sZWc3wK09oJWJiGESb-QPKimxJCcb0oJFpoUcBxqS4=.c00d27ff-b85e-4de6-9770-38dfaf4d0281@github.com> On Wed, 3 Dec 2025 23:14:35 GMT, Patricio Chilano Mateo wrote: >> Please review this small test fix. To make sure the worker thread receives the async exception at a safe place, we should avoid using synchronization objects where the worker thread might need to unpark the main thread. Otherwise, if the main thread is virtual, the async exception might be set while the worker is still executing FJP code. See JBS comments for more detail. >> >> I fixed test AsyncExceptionOnMonitorEnter.java too and removed it from test/hotspot/jtreg/ProblemList-Virtual.txt. The alternative was to problem list AsyncExceptionTest.java, but I think it?s better if we can just keep the tests for this mode too. >> >> Thanks, >> Patricio > > Patricio Chilano Mateo has updated the pull request incrementally with one additional commit since the last revision: > > remove test.thread.factory requirement Thanks David! ------------- PR Comment: https://git.openjdk.org/jdk/pull/27582#issuecomment-3612542226 From pchilanomate at openjdk.org Thu Dec 4 15:05:13 2025 From: pchilanomate at openjdk.org (Patricio Chilano Mateo) Date: Thu, 4 Dec 2025 15:05:13 GMT Subject: Integrated: 8360702: runtime/Thread/AsyncExceptionTest.java timed out In-Reply-To: References: Message-ID: On Tue, 30 Sep 2025 16:20:11 GMT, Patricio Chilano Mateo wrote: > Please review this small test fix. To make sure the worker thread receives the async exception at a safe place, we should avoid using synchronization objects where the worker thread might need to unpark the main thread. Otherwise, if the main thread is virtual, the async exception might be set while the worker is still executing FJP code. See JBS comments for more detail. > > I fixed test AsyncExceptionOnMonitorEnter.java too and removed it from test/hotspot/jtreg/ProblemList-Virtual.txt. The alternative was to problem list AsyncExceptionTest.java, but I think it?s better if we can just keep the tests for this mode too. > > Thanks, > Patricio This pull request has now been integrated. Changeset: 6f03c780 Author: Patricio Chilano Mateo URL: https://git.openjdk.org/jdk/commit/6f03c7808de2b07b1e501d05b1bb7d5bfde5e393 Stats: 52 lines in 2 files changed: 20 ins; 19 del; 13 mod 8360702: runtime/Thread/AsyncExceptionTest.java timed out Reviewed-by: dholmes, fbredberg ------------- PR: https://git.openjdk.org/jdk/pull/27582 From nbenalla at openjdk.org Thu Dec 4 17:06:54 2025 From: nbenalla at openjdk.org (Nizar Benalla) Date: Thu, 4 Dec 2025 17:06:54 GMT Subject: Integrated: 8370890: Start of release updates for JDK 27 In-Reply-To: References: Message-ID: On Tue, 4 Nov 2025 11:45:04 GMT, Nizar Benalla wrote: > Get JDK 27 underway. This pull request has now been integrated. Changeset: c55287d1 Author: Nizar Benalla Committer: Jesper Wilhelmsson URL: https://git.openjdk.org/jdk/commit/c55287d197ef024033f8dfbb5a365cb091bc67fb Stats: 1233 lines in 50 files changed: 1157 ins; 0 del; 76 mod 8370890: Start of release updates for JDK 27 8370893: Add SourceVersion.RELEASE_27 8370894: Add source 27 and target 27 to javac Reviewed-by: darcy, iris, liach, erikj, dholmes ------------- PR: https://git.openjdk.org/jdk/pull/28130 From coleenp at openjdk.org Thu Dec 4 22:37:02 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Thu, 4 Dec 2025 22:37:02 GMT Subject: RFR: 8371409: Wrong lock ordering between FullGCALot_lock and ThreadsLockThrottle_lock/MethodCompileQueue_lock In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 12:59:34 GMT, Coleen Phillimore wrote: > This changes the rank of FullGCALot_lock to nosafepoint since it's taken when we want to do FullGCALot when we take safepoint lock so should always be a rank below that. This lock is very limited in what it does - it only protects some memory that we allocate at the bottom/beginning of the heap so that full gc with older collectors has to move stuff. > Tested with tier1-4. I wrote a test case where I verified this change but the test case times out, so noreg-hard. Thanks Robbin and Patricio. ------------- PR Comment: https://git.openjdk.org/jdk/pull/28633#issuecomment-3614591220 From coleenp at openjdk.org Thu Dec 4 22:37:02 2025 From: coleenp at openjdk.org (Coleen Phillimore) Date: Thu, 4 Dec 2025 22:37:02 GMT Subject: Integrated: 8371409: Wrong lock ordering between FullGCALot_lock and ThreadsLockThrottle_lock/MethodCompileQueue_lock In-Reply-To: References: Message-ID: On Wed, 3 Dec 2025 12:59:34 GMT, Coleen Phillimore wrote: > This changes the rank of FullGCALot_lock to nosafepoint since it's taken when we want to do FullGCALot when we take safepoint lock so should always be a rank below that. This lock is very limited in what it does - it only protects some memory that we allocate at the bottom/beginning of the heap so that full gc with older collectors has to move stuff. > Tested with tier1-4. I wrote a test case where I verified this change but the test case times out, so noreg-hard. This pull request has now been integrated. Changeset: 6db1c4f5 Author: Coleen Phillimore URL: https://git.openjdk.org/jdk/commit/6db1c4f5b93a1b7f7d9da36745dc433c9985a169 Stats: 3 lines in 2 files changed: 0 ins; 0 del; 3 mod 8371409: Wrong lock ordering between FullGCALot_lock and ThreadsLockThrottle_lock/MethodCompileQueue_lock Reviewed-by: rehn, pchilanomate ------------- PR: https://git.openjdk.org/jdk/pull/28633 From schernyshev at openjdk.org Fri Dec 5 10:27:43 2025 From: schernyshev at openjdk.org (Sergey Chernyshev) Date: Fri, 5 Dec 2025 10:27:43 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v9] In-Reply-To: References: Message-ID: > Hi all, > > I would like to propose a fix for JDK-8319589. This will allow jcmd and jps running as root to get the complete list of JVMs running by all users, and to attach from root to non-root JVMs. Previously, JDK-8197387 introduced the same possibility on Linux. > > This change affects macOS, that uses "secure" per-user temporary directories. It only affects JVMs running as root, the behavior in non-privileged JVMs remains unchanged. > > Jcmd and jps rely on LocalVmManager to get the initial list of the local VMs. The LocalVmManager uses sun.jvmstat.PlatformSupport to get the list of temp directories, where it searches for user's PerfData directory such as "hsperfdata_". In macosx the temp directories are per-user, the temp path is returned by confstr(_CS_DARWIN_USER_TEMP_DIR). The per-user directories are mode 700 and so they are read-protected from non-privileged users and can be accessed by the owner and the root. > > Both jps and jcmd (HotSpotAttachProvider) create MonitoredVm objects, that have PerfDataBuffer that performs attachment to the target. Only the attachable VMs are listed in jcmd output. > > The proposed patch changes the list of directories returned by the PlatformSupport#getTemporaryDirectories() in VMs running as root. The list is later used in VirtualMachineImpl (jdk.attach). It changes also the way mmap_attach_shared() searches for hsperfdata_/ files to map the shared memory. Mmap_attach_shared() and VirtualMachineImpl (via PlatformSupport) list the content of /var/folders, where the temp directories are located, more specificly the temp directories are /var/folders///T as hinted in [1]. The full list is returned by newly added PlatformSupportImpl#getTemporaryDirectories(). > > The attaching client's VirtualMachineImpl needs the target process's temp directory to find .java and create .attach files. It uses the list returned by PlatformSupportImpl#getTemporaryDirectories() and the ProcessHandle of the target process to search for user's PerfData directory, e.g. hsperfdata_, which is in the target process's temp directory, exactly where it expects to see the .java in return on sending SIGQUIT to the target VM. > > Mmap_attach_shared() traverses the /var/folders in get_user_tmp_dir() and looks for a hsperfdata_ folder. If that folder is found in /var/folders/*/*/T, that means the temp folder corresponds to the and to the JVM being attached to. > > The... Sergey Chernyshev has updated the pull request incrementally with two additional commits since the last revision: - Reapply "8319589: Attach from root to a user java process not supported in Mac" consolidated as a single patch, with reviewers suggestions. - Revert "8319589: Attach from root to a user java process not supported in Mac" This reverts commit 9fd3781d73286fadf971ab0b6fcc231fba008c94. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/25824/files - new: https://git.openjdk.org/jdk/pull/25824/files/fd1645b0..1dd07e6f Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=25824&range=08 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25824&range=07-08 Stats: 10 lines in 1 file changed: 0 ins; 9 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/25824.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/25824/head:pull/25824 PR: https://git.openjdk.org/jdk/pull/25824 From schernyshev at openjdk.org Fri Dec 5 10:27:45 2025 From: schernyshev at openjdk.org (Sergey Chernyshev) Date: Fri, 5 Dec 2025 10:27:45 GMT Subject: RFR: 8319589: Attach from root to a user java process not supported in Mac [v8] In-Reply-To: References: <7hs5qoZhrBxXH6kJ1uowTEWZEFU_5Bt3V14p5ATcoeg=.cd08c1ce-886a-4a0f-9222-3bdec6c0ba96@github.com> Message-ID: On Thu, 4 Dec 2025 00:31:37 GMT, Serguei Spitsyn wrote: >> Sergey Chernyshev has updated the pull request incrementally with one additional commit since the last revision: >> >> addressed review comments > > We had a private discussion with Larry on this PR and undesired dependency on the `sun.jvmstat` module. > We got the following concerns: > - Do we really need 3x implementations of the MacOS `tempdir` finder function? > - Do we really need a modular dependency from `jdk.attach` to `jdk.internal.jvmstat`? > New method `getTemporaryDirectories(int pid)` is placed into the `jdk.internal.jvmstat/macosx/classes/sun/jvmstat/PlatformSupportImpl.java`. It seems it was needed to inherit the `PlatformSupport` class which has the method `PlatformSupport.getTemporaryDirectory()`. But it returns the same as the removed function `Java_sun_tools_attach_VirtualMachineImpl_getTempDir()`. So, this implementation can be moved to the `jdk.attach` module. > My understanding is that class `PlatformSupportImpl` and its method `getTemporaryDirectories(int pid)` is not currently used for `jvmstat` implementation. Is it correct? Is it right that the `jvmstat` implementation still does not properly support root user on macOS? > Anyway, some unification and refactoring is needed here. We could file a follow up enhancement to sort this out but also wanted to know your opinion on this. Hi @sspitsyn , Thank you for looking at this patch! > This is a nice fix in general. Thank you for this work! I hope to complete my review tomorrow with one more pass. Question: How was this update tested? Do you have a jtreg test or you've done it manually? Also, did you run mach5 tiers 1-6 to be safe and protected against regressions? The patch was tested against the current jtreg test groups (tier1-3) on macOS both amd64 and arm64. I also run jcmd and jps tools manually under root, because the change only affects the behavior under root. > * It seems it was needed to inherit the `PlatformSupport` class which has the method `PlatformSupport.getTemporaryDirectory()`. But it returns the same as the removed function `Java_sun_tools_attach_VirtualMachineImpl_getTempDir()`. So, this implementation can be moved to the `jdk.attach` module. The removed function `Java_sun_tools_attach_VirtualMachineImpl_getTempDir()` would return always the same string cached inside the libsystem_coreservices.dylib, that would correspond the user specific temporary path as of how the JVM process has started, that would have nothing to do with the target process/pid temporary directory. > * My understanding is that class `PlatformSupportImpl` and its method `getTemporaryDirectories(int pid)` is not currently used for `jvmstat` implementation. Is it correct? I think this is not exactly so. `getTemporaryDirectories(int pid)` is used currently in the LocalVmManager to get the list of active VMs, that is consumed by `jcmd`, `jps` and `jconsole` utilities. When 0 is passed as a parameter, it returns the list of temp directories for all processes, if they were different (for example if there are containerized JVM processes under Linux). > * Is it right that the `jvmstat` implementation still does not properly support root user on macOS? Yes and this is what this patch was intended for. > * Do we really need 3x implementations of the MacOS `tempdir` finder function? It was already 2x implementation of HotSpot perfdata files lookup, HotSpot itself uses the `os::get_temp_directory()`, on the java side the LocalVmManager in `sun.jvmstat.perfdata.monitor` relies on `getTemporaryDirectories(int pid)` in the PlatformSupport. The 3rd was the macOS native `Java_sun_tools_attach_VirtualMachineImpl_getTempDir()`, now it's proposed for removal as it returns only the current user temp path, no matter what process is being attached to. > * Do we really need a modular dependency from `jdk.attach` to `jdk.internal.jvmstat`? It was already a dependency of `jdk.attach` to `sun.jvmstat.monitor`. This change exports also `sun.jvmstat`, in addition to `sun.jvmstat.monitor` as it was before. > src/hotspot/os/bsd/os_bsd.cpp line 956: > >> 954: } >> 955: #endif >> 956: > > Nit: I'd suggest to get rid of empty lines which do not improve readability: > 890, 903, 908, 917, 923, 930, 933, 941, 944 > Also, the comment at line 931 is better to start with a capital letter: `// If the ..` . Thanks @sspitsyn , done. ------------- PR Comment: https://git.openjdk.org/jdk/pull/25824#issuecomment-3616052858 PR Review Comment: https://git.openjdk.org/jdk/pull/25824#discussion_r2592160722