projectdiscovery/nuclei · error · errRuntimeTerminationTimeout
nuclei js runtime: program failed to terminate after interru
Error message
nuclei js runtime: program failed to terminate after interrupt
What it means
Error "nuclei js runtime: program failed to terminate after interrupt" thrown in projectdiscovery/nuclei.
Source
Thrown at pkg/js/compiler/pool.go:69
"github.com/projectdiscovery/nuclei/v3/pkg/protocols/common/protocolstate"
"github.com/projectdiscovery/nuclei/v3/pkg/utils/json"
)
const (
exportToken = "Export"
exportAsToken = "ExportAs"
)
// errRuntimeTerminationTimeout is returned by session when the
// goroutine running goja.Runtime.RunProgram fails to terminate within the
// grace period after an interrupt was raised. When this error is returned
// the runtime MUST NOT be touched (no cleanup, no reuse, no Put back to
// the pool) because the orphaned goroutine is still operating on it; any
// concurrent access would race with goja's per-runtime state and can
// trigger a fatal "concurrent map read and map write" runtime panic.
//
// See https://github.com/projectdiscovery/nuclei/issues/7376.
var errRuntimeTerminationTimeout = errors.New("nuclei js runtime: program failed to terminate after interrupt")
var (
lazyRegistryInit = sync.OnceFunc(func() {
// autoregister console node module with default printer it uses gologger backend
require.RegisterNativeModule(console.ModuleName, console.RequireWithPrinter(goconsole.NewGoConsolePrinter()))
})
pooljsc *syncutil.AdaptiveWaitGroup
lazySgInit = sync.OnceFunc(func() {
pooljsc, _ = syncutil.New(syncutil.WithSize(PoolingJsVmConcurrency))
})
sgResizeCheck = func(ctx context.Context) {
// resize check point
if pooljsc.Size != PoolingJsVmConcurrency {
if err := pooljsc.Resize(ctx, PoolingJsVmConcurrency); err != nil {
gologger.Warning().Msgf("Could not resize workpool: %s\n", err)
}
}
}View on GitHub (pinned to 265b3a3dec)
When it happens
Trigger: Thrown at pkg/js/compiler/pool.go:69 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of projectdiscovery/nuclei@265b3a3dec (2026-08-15).
Data as JSON: /api/errors/c35ae9ac2c40e063.
Report an issue: GitHub.