Slipstream Helper runs out of memory (Stack-Heap Collision) right after login #1503

Open
opened 2026-11-09 02:23:13 +00:00 by TheSlowly · 0 comments
Collaborator

Right after login the helper dies with #Slipstream Helper Script: Script run-time error: Stack-Heap Collision. Started with position sync (#1417, fc282e806d).

Measured in world (local diagnostic build of the helper, llGetUsedMemory):

state_entry:            used 58356 of 65536
after "ping|k":         used 58786
after "pos/send/1|...": used 60286

The script is at ~57 KB before it does anything; #1417 added ~185 code lines to an already large script. Any bigger command (the visible-avatar list, a script-info batch, a combat burst) then runs it out. A crashed helper also stays dead for the session: nothing on the viewer side notices it stopped answering.

Plan:

  1. Split position sync into a second script in the helper (#Slipstream Helper Position); the main script hands it pos/* commands and keep-alives as link messages. The position script sets a small memory limit, so the helper's reported script memory barely grows.
  2. SLBridge installs, versions and verifies both scripts (exactly these two, ours).
  3. READY liveness: a helper that stops answering the hello every ping asks for is reinstalled.
  4. The helper reports its memory in hello; the viewer logs it once per check.
  5. A source check keeps each script under a size budget.
Right after login the helper dies with `#Slipstream Helper Script: Script run-time error: Stack-Heap Collision`. Started with position sync (#1417, fc282e806d). Measured in world (local diagnostic build of the helper, `llGetUsedMemory`): ``` state_entry: used 58356 of 65536 after "ping|k": used 58786 after "pos/send/1|...": used 60286 ``` The script is at ~57 KB before it does anything; #1417 added ~185 code lines to an already large script. Any bigger command (the visible-avatar list, a script-info batch, a combat burst) then runs it out. A crashed helper also stays dead for the session: nothing on the viewer side notices it stopped answering. Plan: 1. Split position sync into a second script in the helper (`#Slipstream Helper Position`); the main script hands it `pos/*` commands and keep-alives as link messages. The position script sets a small memory limit, so the helper's reported script memory barely grows. 2. SLBridge installs, versions and verifies both scripts (exactly these two, ours). 3. READY liveness: a helper that stops answering the hello every ping asks for is reinstalled. 4. The helper reports its memory in hello; the viewer logs it once per check. 5. A source check keeps each script under a size budget.
TheSlowly added this to the Slipstream project 2026-11-09 02:23:13 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#1503
No description provided.