On Mon, 9 Nov 2026 23:12:29 GMT, Ashay Rane <[email protected]> wrote:
>> Without this patch, HotSpot uses `VirtualAlloc()` with `MEM_COMMIT` to >> make Windows convert stack pages from "reserved" to "committed", but >> doing so does not update the `StackLimit` field in the Thread >> Environment Block (TEB) tracked by Windows. Subsequent use of the stack >> by HotSpot can cause the stack pointer to be _below_ `StackLimit`, which >> breaks the invariant expected by the Win32 API functions like >> `__chkstk()`. >> >> To fix this problem, this patch touches pages one by one, starting from >> `StackLimit` down to the target address. This has the intended effect >> of commiting the pages, but it also correctly updates `StackLimit`. >> >> The included test reliably fails without this patch, and it passes with >> this patch. I validated this patch using Tier 1 through 3 tests in the >> JDK, HotSpot, and LangTools test groups. >> >> --------- >> - [x] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > Ashay Rane has updated the pull request incrementally with one additional > commit since the last revision: > > Fix `tib` type declaration > > From Dean's comment, which was helpful to understand the difference: > > > The problem is PNT_TIB is a typedef of a pointer type, so "const > > volatile PNT_TIB" is the same as "PNT_TIB const volatile". I think > > what you need is "const volatile TEB *" or an equivalent > > VOLATILE_PNT_TIB typedef. Just to confirm, re-running tier 1 through 3 jtreg tests in the HotSpot, JDK, and LangTools test groups after the most recent change did not show any new failures. ------------- PR Comment: https://git.openjdk.org/jdk/pull/33729#issuecomment-6770531093
