Skip to content

netclaw init crashes on macOS — ChatPage.BuildLayout() NullReferenceException #1069

@Aaronontheweb

Description

@Aaronontheweb

Summary

On macOS (Apple Silicon), completing the netclaw init wizard crashes the process when it hands off to the interactive chat page. ChatPage.BuildLayout() throws a NullReferenceException and the process aborts (Abort trap: 6).

This is macOS-specific — the Linux smoke leg runs the identical init-wizard tape and passes.

Stack trace

Fatal error — crash log written to /Users/runner/.netclaw/logs/crash-20260518-144144.log
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
   at Netclaw.Cli.Tui.ChatPage.BuildLayout()
   at Termina.TerminaApplication.RenderCurrentPage()
   at Termina.TerminaApplication.RunAsync(CancellationToken cancellationToken)
   at Termina.Hosting.TerminaHostedService.<>c__DisplayClass5_0.<<StartAsync>b__0>d.MoveNext()
   --- End of stack trace from previous location ---
   at Termina.Hosting.TerminaHostedService.StopAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](...)
   at Microsoft.Extensions.Hosting.Internal.Host.StopAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.WaitForShutdownAsync(...)
   ...
   at Program.<Main>$(String[] args)
Abort trap: 6

How it was found

Surfaced by the native smoke harness's macOS leg (Native Smoke (macOS)) on the CI run for PR #1066. PR #1066 is an unrelated test-only change (fix(tests): register reminder services in LlmSessionTestBase) and did not cause this — the macOS smoke leg simply ran against a dev-based branch and surfaced a pre-existing bug. ChatPage is shipped CLI code, untouched by #1066.

Failing job: https://github.com/netclaw-dev/netclaw/actions/runs/26040137073/job/76549794637

Impact

netclaw init is the first command a new user runs. On macOS it completes the wizard and then immediately crashes on the transition to chat — a broken first-run experience. Same class as #1014.

Notes for investigation

  • ChatPage.BuildLayout() (src/Netclaw.Cli/Tui/ChatPage.cs:95) is short; the NRE is most likely a field still null at render time (_chatHistory / _promptInput are null! until OnBound()), a null ViewModel, or a null StatusMessage value flowing into the BuildStatusBar() status switchstatus.StartsWith(...) on a null status.
  • The crash log at ~/.netclaw/logs/crash-20260518-144144.log would pinpoint it (note: written to the default ~/.netclaw, not the per-tape NETCLAW_HOME). Reproduce on macOS to capture it.
  • Why it is macOS-only is the key question — points at a platform-dependent null in view-model state, or a render-before-bind ordering difference between platforms.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingplatform:macosmacOS-specific issues and supporttuiTerminal UI (Termina) issues

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions