Skip to content

potentially fix freeze with fast FMOD bank loading#1103

Open
wuke32767 wants to merge 2 commits into
EverestAPI:devfrom
wuke32767:fix-fast-audio-loading-freeze
Open

potentially fix freeze with fast FMOD bank loading#1103
wuke32767 wants to merge 2 commits into
EverestAPI:devfrom
wuke32767:fix-fast-audio-loading-freeze

Conversation

@wuke32767

Copy link
Copy Markdown
Contributor

i'm not too sure how did it work

@maddie480-bot maddie480-bot added the 1: review needed This PR needs 2 approvals to be merged (bot-managed) label Apr 5, 2026
@wuke32767

wuke32767 commented Apr 5, 2026

Copy link
Copy Markdown
Contributor Author

so i understood it:
someone is accessing the content map in the main thread while audio is loading, so main thread is blocked;
main thread is blocked, so fmod can't be updated, and requested bank can't be loaded.

EDIT: i found it in the document. https://www.fmod.com/docs/2.00/api/studio-guide.html#studio-system-processing

this pr unlocks content map when waiting audio loading.

@Wartori54 Wartori54 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks promising even though I could not repro the issue without forcing it via extra code.
My only concern is calling PostProcessBank outside of the lock. It used to be called in it so I'd say the safe bet is to keep it that way.

@Wartori54 Wartori54 changed the title potentially fix freeze potentially fix freeze with fast FMOD bank loading Apr 5, 2026

@Wartori54 Wartori54 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.
I managed to reproduce the issue with the following mod list and this PR fixed it:

    - Name: AdventureHelper
      Version: 1.6.0
    - Name: AltLevelsHelper
      Version: 1.1.0
    - Name: Anonhelper
      Version: 1.1.1
    - Name: ArphimigonsToyBox
      Version: 1.4.1
    - Name: AurorasAdditions
      Version: 1.4.2
    - Name: Batteries
      Version: 1.1.4
    - Name: bitsbolts
      Version: 1.4.8
    - Name: BounceHelper
      Version: 1.14.0
    - Name: BrassHelper
      Version: 0.6.0
    - Name: CanyonHelper
      Version: 1.1.6
    - Name: CavernHelper
      Version: 1.3.7
    - Name: CherryHelper
      Version: 1.8.2
    - Name: CollabUtils2
      Version: 1.12.7
    - Name: ColoredLights
      Version: 1.2.0
    - Name: CommunalHelper
      Version: 1.24.5
    - Name: ContortHelper
      Version: 1.5.5
    - Name: CPop City
      Version: 1.0.0
    - Name: CpopHelper
      Version: 1.3.0
    - Name: DBBHelper
      Version: 1.1.1
    - Name: DeathTracker
      Version: 1.1.0
    - Name: DisposableTheo
      Version: 1.0.6
    - Name: DJMapHelper
      Version: 1.13.4
    - Name: blue hair and pronouns
      Version: 1.0.0
    - Name: FactoryHelper
      Version: 1.4.1
    - Name: FancyTileEntities
      Version: 1.6.2
    - Name: FlaglinesAndSuch
      Version: 1.6.65
    - Name: FurryHelper
      Version: 1.0.6
    - Name: GlyphAudio
      Version: 1.3.0
    - Name: HonlyHelper
      Version: 1.7.5
    - Name: JackalHelper
      Version: 1.7.6
    - Name: JungleHelper
      Version: 1.4.7
    - Name: LuaCutscenes
      Version: 0.2.13
    - Name: LunaticHelper
      Version: 1.1.1
    - Name: memorialHelper
      Version: 1.0.4
    - Name: MOCE Audio
      Version: 1.0.0
    - Name: Monika's D-Sides Audio
      Version: 1.4.0
    - Name: Monika's D-Sides
      Version: 4.81.0
    - Name: MoreDasheline
      Version: 1.7.1
    - Name: NerdHelper
      Version: 1.6.3
    - Name: OutbackHelper
      Version: 1.7.3
    - Name: PandorasBox
      Version: 1.0.49
    - Name: EmHelper
      Version: 1.3.0
    - Name: PlatinumStrawberry
      Version: 1.1.1.0
    - Name: SafeRespawnCrumble
      Version: 1.2.0
    - Name: SaladimHelper
      Version: 0.3.4
    - Name: Sardine7
      Version: 1.2.0
    - Name: ShroomHelper
      Version: 1.2.10
    - Name: SpeedrunTool
      Version: 3.27.14
    - Name: BGswitch
      Version: 1.2.2
    - Name: ConsistencyTracker
      Version: 2.9.8
    - Name: SSMHelper
      Version: 1.2.15
    - Name: StaminaMeter
      Version: 1.3.1
    - Name: StrawberryJam2021Assets
      Version: 1.0.1
    - Name: StrawberryJam2021AudioA
      Version: 1.0.4
    - Name: StrawberryJam2021AudioB
      Version: 1.0.0
    - Name: StrawberryJam2021AudioC
      Version: 1.0.1
    - Name: TwigHelper
      Version: 1.6.0
    - Name: UnderDragon's Purecolor Tilesets Subsitory
      Version: 1.0.0
    - Name: UnderDragon's Stylegrounds Subsitory
      Version: 1.0.0
    - Name: viddiesToolbox
      Version: 1.3.0
    - Name: XaphanHelper
      Version: 1.0.78
    - Name: YetAnotherHelper
      Version: 1.2.5
    - Name: BrokemiaHelper
      Version: 1.8.5
    - Name: CelesteTAS
      Version: 3.47.0
    - Name: IsaGrabBag
      Version: 1.7.3
    - Name: ExtendedVariantMode
      Version: 0.48.1
    - Name: FrostHelper
      Version: 1.78.0
    - Name: Glyph
      Version: 2.3.3
    - Name: PrismaticHelper
      Version: 1.12.0
    - Name: SkinModHelperPlus
      Version: 0.17.8
    - Name: FlamecrafterAssetPack
      Version: 1.4.0
    - Name: AdamsAddons
      Version: 1.15.1
    - Name: AurorasHelper
      Version: 0.12.5
    - Name: ChroniaHelper
      Version: 1.49.3
    - Name: CrystallineHelper
      Version: 1.17.1
    - Name: EeveeHelper
      Version: 1.12.5
    - Name: FemtoHelper
      Version: 1.15.10
    - Name: FrenchHelper
      Version: 1.1.9
    - Name: GameHelper
      Version: 1.11.1
    - Name: GravityHelper
      Version: 1.2.24
    - Name: KoseiHelper
      Version: 1.19.1.0
    - Name: LuckyHelper
      Version: 0.31.2
    - Name: MaxHelpingHand
      Version: 1.39.18
    - Name: PrologueIfItLockedTheFuckIn
      Version: 1.0.1
    - Name: sisyphus
      Version: 0.0.1
    - Name: SorbetHelper
      Version: 1.8.3
    - Name: SpirialisHelper
      Version: 1.0.8
    - Name: StyleMaskHelper
      Version: 1.4.0
    - Name: VivHelper
      Version: 1.14.10
    - Name: 1000ceilingpops
      Version: 1.0.1
    - Name: 5knrcb
      Version: 0.0.1
    - Name: CreepypastaGym
      Version: 1.1.0
    - Name: Debug Map
      Version: 1.2.6
    - Name: maturegrape+
      Version: 1.1.3
    - Name: mauve
      Version: 1.1.4
    - Name: Pale Violet
      Version: 1.0.2
    - Name: VortexHelper
      Version: 1.2.19
    - Name: GMplusGyms
      Version: 0.3.15
    - Name: MOCE
      Version: 2.6.7.2
    - Name: Moon of the Ultras
      Version: 1.1.0
    - Name: NotAnotherClimbingGameFullversion
      Version: 1.0.8
    - Name: ReachForTheStars
      Version: 1.0.3
    - Name: StrawberryJam2021
      Version: 1.0.12

@DashingCat

Copy link
Copy Markdown
Contributor

Like @Wartori54, I was able to reproduce the issue with a similar mod list, and confirm the PR fixes it.

@microlith57 microlith57 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure fair enough

@maddie480-bot

Copy link
Copy Markdown
Member

The pull request was approved and entered the 3-day last-call window.
If no further reviews happen, it will end on May 12, 2026, 12:02 AM UTC, after which the pull request will be able to be merged.

@maddie480-bot maddie480-bot added 3: last call window This PR was approved, and is in the 5-day last-call window before getting merged (bot-managed) and removed 1: review needed This PR needs 2 approvals to be merged (bot-managed) labels May 9, 2026
@maddie480-bot

Copy link
Copy Markdown
Member

The last-call window for this pull request ended. It can now be merged if no blockers were brought up.

@maddie480-bot maddie480-bot added 4: ready to merge This PR was approved and the last-call window is over (bot-managed) and removed 3: last call window This PR was approved, and is in the 5-day last-call window before getting merged (bot-managed) labels May 12, 2026
@SnipUndercover

Copy link
Copy Markdown
Member

I'm unable to merge from mobile due to merge conflicts.
If someone could resolve this then I'll do the merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4: ready to merge This PR was approved and the last-call window is over (bot-managed)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants