Skip to content

string() coercion on list-type value HARD-ABORTS interpreter (exit 1, uncontainable); blocks --export-root #887

Open

Description

@jsavin

Rationale

string() coercion on a list-type value HARD-ABORTS the interpreter (exit 1), killing the script THROUGH an enclosing try (uncontainable). Enumerating the list is fine; only string() dies. This blocks any generic walker/serializer that coerces values (including the planned --export-root tool). Impact is severe: crash cannot be caught, no fallback available.

Current State

Verified reproduction (2026-08-11, pristine Virgin.root):

string(system.extensions.odbc.data.dll.macCarbon.rFork)
string(system.extensions.odbc.data.dll.macCarbon.rFork) -- regex sibling also crashes

Both are type list with 3 reco children:

  • Enumerating the list: works fine
  • string() coercion: HARD-ABORT (exit 1, kills script, uncontainable by try/else)

Impact:

  • Generic value walker/serializer crashes on list values
  • Planned --export-root tool will hit this on Virgin.root paths
  • try/else offers NO protection (hard abort)
  • No fallback coercion available

Scope:

  • At least 2 confirmed list values in Virgin.root
  • May be more (census incomplete at time of report)

Desired Outcome

  1. Fix string() coercion to handle list type gracefully
  2. Return a sensible representation (e.g., string of list length, or JSON array representation)
  3. Make the operation catchable by try/else (convert hard-abort to exception)
  4. Add regression test: string() on list values must not crash

Recommendation

  1. Trace the crash: LLDB backtrace on string(list_value)
  2. Identify root cause: Type dispatch in string coercion, missing list handler
  3. Implement handler: Return appropriate string representation (length, array notation, etc.)
  4. Test: Verify try/else can catch any exceptions (no hard abort)

Exit Criteria

  • string(list_value) does not crash
  • Returns sensible string representation
  • Exceptions are catchable by try/else
  • Regression test added: string() on list values
  • Planned --export-root tool can handle list values

Related Context

Distinct from Other Issues

Activity

  1. added
    priority/p1High priority - address soon
    scope/medium1-2 weeks, requires design work
    type/bugDefect in existing functionality, needs fix
    workstream/runtime-coreRuntime architecture, memory, lifecycle, and global context
    on Aug 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority/p1High priority - address soonscope/medium1-2 weeks, requires design worktype/bugDefect in existing functionality, needs fixworkstream/runtime-coreRuntime architecture, memory, lifecycle, and global context

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions