Skip to content

7 bugs found by Faultmark analysis: null crashes, stale state, missing deps #3748

@R0hit-Sriram

Description

@R0hit-Sriram

We ran Faultmark, an AI-powered static analysis tool that uses a multi-model debate to verify bugs before reporting them, on the trigger.dev codebase. Each finding was verified against source code before being surfaced. Found 7 real bugs.

Bug 1 (High): LogsListPresenter guard condition is inverted for ClickHouse store File: apps/webapp/app/presenters/v3/LogsListPresenter.server.ts

The guard that checks whether a run uses the ClickHouse store has its condition inverted. It throws in the common case instead of the edge case, meaning runs on ClickHouse will never return logs.

Bug 2 (High): RouteErrorDisplay crashes on null error.data File: apps/webapp/app/components/RouteErrorDisplay.tsx

error.data.message is accessed without a null check on error.data. If the server returns a response with no body, this throws an uncaught TypeError.

Bug 3 (High): Build settings stale after form submission File: apps/webapp/app/components/runs/BuildSettings.tsx

Local state is not reset after a successful form submission. The UI continues showing the previous values even after the save succeeds, making it look like the save failed or did not apply.

Bug 4 (Medium): Missing key prop in DebugRunDataEngineV2 File: apps/webapp/app/components/runs/DebugRunDataEngineV2.tsx

A list of elements is rendered without a key prop. This causes React reconciliation issues and console warnings, and can produce incorrect rendering during list reorders or updates.

Bug 5 (Medium): ReplayRunDialog missing dependency in useEffect File: apps/webapp/app/components/runs/ReplayRunDialog.tsx

replayDataFetcher.data is used inside a useEffect but is not in the dependency array. If the fetcher resolves after the initial render, the effect does not re-run and the dialog shows stale data.

Bug 6 (Medium): AIFilterInput navigation fires on wrong fetcher state File: apps/webapp/app/components/runs/AIFilterInput.tsx

The navigation effect triggers when fetcher.state === "idle", which is also true before the fetch has started. This can cause premature or incorrect navigation on initial render before the fetcher has run.

Bug 7 (Medium): AgentView refs retained across session changes File: apps/webapp/app/components/runs/AgentView.tsx

Refs holding scroll positions and internal state are not reset when the session ID changes. Switching between sessions causes the view to use stale ref values from the previous session.

Found with [Faultmark](https://faultmark.com/) -- AI static analysis with multi-model verification. Happy to clarify any of these.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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