Skip to content

[AUDIO_WORKLET] Add interactive heap growing test NFC#24931

Merged
sbc100 merged 3 commits intoemscripten-core:mainfrom
cwoffenden:cw-aw-grow-heap
Aug 19, 2025
Merged

[AUDIO_WORKLET] Add interactive heap growing test NFC#24931
sbc100 merged 3 commits intoemscripten-core:mainfrom
cwoffenden:cw-aw-grow-heap

Conversation

@cwoffenden
Copy link
Collaborator

@cwoffenden cwoffenden commented Aug 14, 2025

This adds an interactive test to force growing the heap during playback:

test/runner interactive.test_audio_worklet_memory_growth

Tested with interactive64 and interactive_2gb (for interactive64_4gb the heap is already at the browser's max in testing so can't be grown).

It works by alloc'ing and leaking 2/3 of the current size until it can no longer do so. Emscripten regrows its wasm memory in the process, invalidating any data views (see #24891).

Edit: test can now grow from both the main and audio thread.

@cwoffenden cwoffenden changed the title [AUDIO_WORKLET] Add interactive heap growing test [AUDIO_WORKLET] Add interactive heap growing test NFC Aug 15, 2025
@cwoffenden
Copy link
Collaborator Author

I'd be good to land this and its companion hard-pan test. Both are interactive so don't affect the CI.

@sbc100 sbc100 merged commit b4a7e77 into emscripten-core:main Aug 19, 2025
30 checks passed
sbc100 pushed a commit that referenced this pull request Aug 19, 2025
Built on #24931 (it touches the same file, but a rebase after merge will
fix this). This adds hard-panned audio files to test that the left and
right channels don't get flipped with any changes to the audio worklet
code (relevant for #24891, which changes how the copies are performed).
```
test/runner interactive.test_audio_worklet_hard_pans
```
The bass track is hard-left (with its right muted), drums are right.
@cwoffenden cwoffenden deleted the cw-aw-grow-heap branch August 19, 2025 19:24
inolen pushed a commit to inolen/emscripten that referenced this pull request Feb 13, 2026
…e#24931)

This adds an interactive test to force growing the heap during playback:
```
test/runner interactive.test_audio_worklet_memory_growth
```
Tested with `interactive64` and `interactive_2gb` (for
`interactive64_4gb` the heap is already at the browser's max in testing
so can't be grown).

It works by alloc'ing and leaking 2/3 of the current size until it can
no longer do so. Emscripten regrows its wasm memory in the process,
invalidating any data views (see emscripten-core#24891).

**Edit: test can now grow from both the main and audio thread.**
inolen pushed a commit to inolen/emscripten that referenced this pull request Feb 13, 2026
)

Built on emscripten-core#24931 (it touches the same file, but a rebase after merge will
fix this). This adds hard-panned audio files to test that the left and
right channels don't get flipped with any changes to the audio worklet
code (relevant for emscripten-core#24891, which changes how the copies are performed).
```
test/runner interactive.test_audio_worklet_hard_pans
```
The bass track is hard-left (with its right muted), drums are right.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants