Skip to content

Intermittent panic in tsgo cli; hard to reproduce #2057

@Raynos

Description

@Raynos

Stack trace

~/projects/depscan on jake/typescript-go*
$ pnpm build:tsgo --stopBuildOnErrors
 WARN  Unsupported engine: wanted: {"node":"^22.18.0"} (current: {"node":"v22.17.0","pnpm":"10.16.1"})

> socket.dev@1.0.0 build:tsgo /Users/raynos/projects/depscan
> tsgo -b --verbose --stopBuildOnErrors

[11:53:42 AM] Projects in this build:
    * submodules/socket-patch/tsconfig.json
    * workspaces/lib/tsconfig.json
    * workspaces/legal-parser/tsconfig.json
    * workspaces/metadata-common/tsconfig.json
    * workspaces/metadata-service/tsconfig.json
    * workspaces/metadata-client/tsconfig.json
    * workspaces/obfuscated-pass/tsconfig.json
    * workspaces/reachability-pattern-tools/tsconfig.json
    * workspaces/pipeline/tsconfig.json
    * workspaces/analytics-schema/tsconfig.json
    * workspaces/clickhouse/tsconfig.json
    * workspaces/kafka/tsconfig.json
    * workspaces/app/tsconfig.json
    * tools/tsconfig.json
    * workspaces/analytics-shared/tsconfig.json
    * workspaces/analytics/tsconfig.json
    * workspaces/api-v0/tsconfig.json
    * workspaces/api-v1/tsconfig.json
    * workspaces/artifact-api-service/tsconfig.json
    * workspaces/artifact-search/tsconfig.json
    * workspaces/firewall-api-proxy/tsconfig.json
    * workspaces/gcp-admin/tsconfig.json
    * workspaces/gcs-bucket-server/tsconfig.json
    * workspaces/github-actions/tsconfig.json
    * workspaces/grafana-dashboards/tsconfig.json
    * workspaces/github-app/tsconfig.json
    * workspaces/github-interposer/tsconfig.json
    * workspaces/hosted-mcp/tsconfig.json
    * workspaces/metadata-service-admin/tsconfig.json
    * workspaces/metrics-exporter/tsconfig.json
    * workspaces/autotester/tsconfig.json
    * workspaces/vanta/tsconfig.json
    * workspaces/mini-services/tsconfig.json
    * workspaces/web-extension/tsconfig.json
    * workspaces/next-app/tsconfig.server.json
    * workspaces/reachability-analyzers-service/tsconfig.json
    * workspaces/subprocess-runner/tsconfig.json
    * tsconfig.json

[11:53:42 AM] Project 'submodules/socket-patch/tsconfig.json' is up to date because newest input 'submodules/socket-patch/src/utils.ts' is older than output 'submodules/socket-patch/dist/tsconfig.tsbuildinfo'

[11:53:42 AM] Project 'workspaces/lib/tsconfig.json' is out of date because output 'workspaces/lib/dist/tsconfig.tsbuildinfo' is older than input 'workspaces/lib/src/tracing/helpers.ts'

[11:53:42 AM] Building project 'workspaces/lib/tsconfig.json'...

[11:53:43 AM] Project 'workspaces/legal-parser/tsconfig.json' is out of date because output 'workspaces/legal-parser/dist/tsconfig.tsbuildinfo' is older than input 'workspaces/lib'

[11:53:43 AM] Building project 'workspaces/legal-parser/tsconfig.json'...

[11:53:44 AM] Updating unchanged output timestamps of project 'workspaces/legal-parser/tsconfig.json'...

[11:53:43 AM] Project 'workspaces/metadata-common/tsconfig.json' is out of date because output 'workspaces/metadata-common/dist/tsconfig.tsbuildinfo' is older than input 'workspaces/lib'

[11:53:43 AM] Building project 'workspaces/metadata-common/tsconfig.json'...

[11:53:43 AM] Updating unchanged output timestamps of project 'workspaces/metadata-common/tsconfig.json'...

panic: interface conversion: checker.TypeSystemEntity is nil, not *ast.Symbol

goroutine 142884 [running]:
github.com/microsoft/typescript-go/internal/checker.(*Checker).typeResolutionHasProperty(0x14063451448?, 0x10532d918?)
	github.com/microsoft/typescript-go/internal/checker/checker.go:18106 +0x304
github.com/microsoft/typescript-go/internal/checker.(*Checker).findResolutionCycleStartIndex(0x1406fe82608, {0x10573f6e0, 0x1406f858f50}, 0x9)
	github.com/microsoft/typescript-go/internal/checker/checker.go:18093 +0x80
github.com/microsoft/typescript-go/internal/checker.(*Checker).pushTypeResolution(0x1406fe82608, {0x10573f6e0, 0x1406f858f50}, 0x9)
	github.com/microsoft/typescript-go/internal/checker/checker.go:18066 +0x2c
github.com/microsoft/typescript-go/internal/checker.(*Checker).resolveAlias(0x1406fe82608, 0x1406f858f50)
	github.com/microsoft/typescript-go/internal/checker/checker.go:15677 +0x64
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkAliasSymbol(0x1406fe82608, 0x1403fb78370)
	github.com/microsoft/typescript-go/internal/checker/checker.go:6435 +0x3c
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkImportBinding(0x1406fe82608, 0x1403fb78370)
	github.com/microsoft/typescript-go/internal/checker/checker.go:5137 +0x48
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkImportDeclaration(0x1406fe82608, 0x1404ed13680)
	github.com/microsoft/typescript-go/internal/checker/checker.go:5071 +0x600
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkSourceElementWorker(0x1406fe82608, 0x1404ed13680)
	github.com/microsoft/typescript-go/internal/checker/checker.go:2291 +0x348
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkSourceElement(0x1406fe82608, 0x1403ef03830?)
	github.com/microsoft/typescript-go/internal/checker/checker.go:2163 +0x4c
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkSourceElements(0x1406fe82608, {0x1406b8652f0, 0x6, 0x1406709dbd0?})
	github.com/microsoft/typescript-go/internal/checker/checker.go:2154 +0x34
github.com/microsoft/typescript-go/internal/checker.(*Checker).checkSourceFile(0x1406fe82608, {0x1059271f0, 0x105f4b620}, 0x1406bbc6008)
	github.com/microsoft/typescript-go/internal/checker/checker.go:2127 +0xf4
github.com/microsoft/typescript-go/internal/checker.(*Checker).CheckSourceFile(0x1406fe82608, {0x1059271f0, 0x105f4b620}, 0x1406bbc6008)
	github.com/microsoft/typescript-go/internal/checker/checker.go:2116 +0x64
github.com/microsoft/typescript-go/internal/checker.(*Checker).getDiagnostics(0x1406fe82608, {0x1059271f0, 0x105f4b620}, 0x1406bbc6008, 0x1406fe827f0)
	github.com/microsoft/typescript-go/internal/checker/checker.go:13438 +0xac
github.com/microsoft/typescript-go/internal/checker.(*Checker).GetDiagnostics(...)
	github.com/microsoft/typescript-go/internal/checker/checker.go:13421
github.com/microsoft/typescript-go/internal/compiler.(*Program).getSemanticDiagnosticsForFileNotFilter(0x14066716a80, {0x1059271f0, 0x105f4b620}, 0x1406bbc6008)
	github.com/microsoft/typescript-go/internal/compiler/program.go:1037 +0x27c
github.com/microsoft/typescript-go/internal/compiler.(*Program).getSemanticDiagnosticsForFile(0x14066716a80, {0x1059271f0?, 0x105f4b620?}, 0x1406bbc6008)
	github.com/microsoft/typescript-go/internal/compiler/program.go:1012 +0x30
github.com/microsoft/typescript-go/internal/compiler.(*Program).getDiagnosticsHelper(0x0?, {0x1059271f0, 0x105f4b620}, 0x1406bbc6008?, 0x0?, 0x0?, 0x140453bcc28)
	github.com/microsoft/typescript-go/internal/compiler/program.go:1209 +0xf4
github.com/microsoft/typescript-go/internal/compiler.(*Program).GetSemanticDiagnostics(0x0?, {0x1059271f0?, 0x105f4b620?}, 0x10591d130?)
	github.com/microsoft/typescript-go/internal/compiler/program.go:416 +0x3c
github.com/microsoft/typescript-go/internal/compiler.GetDiagnosticsOfAnyProgram({0x1059271f0, 0x105f4b620}, {0x10592d2c0, 0x14066716a80}, 0x1406bbc6008, 0x1, 0x140453bcd60, 0x140453bcd48)
	github.com/microsoft/typescript-go/internal/compiler/program.go:1500 +0x364
github.com/microsoft/typescript-go/internal/compiler.HandleNoEmitOnError({0x1059271f0, 0x105f4b620}, {0x10592d2c0, 0x14066716a80}, 0x1406bbc6008)
	github.com/microsoft/typescript-go/internal/compiler/program.go:1457 +0x98
github.com/microsoft/typescript-go/internal/compiler.(*Program).Emit(0x14066716a80, {0x1059271f0, 0x105f4b620}, {0x1406bbc6008?, 0x60?, 0x1403ef03800?})
	github.com/microsoft/typescript-go/internal/compiler/program.go:1364 +0x74
github.com/microsoft/typescript-go/internal/execute/incremental.(*emitFilesHandler).emitFilesIncremental.func1.1()
	github.com/microsoft/typescript-go/internal/execute/incremental/emitfileshandler.go:124 +0x12c
github.com/microsoft/typescript-go/internal/core.(*parallelWorkGroup).Queue.func1()
	github.com/microsoft/typescript-go/internal/core/workgroup.go:40 +0x24
sync.(*WaitGroup).Go.func1()
	sync/waitgroup.go:239 +0x4c
created by sync.(*WaitGroup).Go in goroutine 285
	sync/waitgroup.go:237 +0x70
 ELIFECYCLE  Command failed with exit code 2.

Steps to reproduce

  1. I edited a file in the monorepo with the text
// Tracer is the type of the opentelemetry Tracer interface or class. 
export type { Tracer }

or maybe

export { Tracer }

I tried changing some things and then could no longer reproduce this panic.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions