-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Labels
Description
Brief summary
Brief summary
Let's say we call this API:
await Promise.all([
page.waitForURL(),
page.locator('a[href="/my_messages.php"]').click()
]);
This currently panics and causes a nasty call stack:
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
running panic: runtime error: invalid memory address or nil pointer dereference [recovered]
ui [panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x28 pc=0x1031d33f8]
goroutine 96 [running]:
github.com/grafana/sobek.(*Runtime).runWrapped.func1()
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/runtime.go:2521 +0xf4
panic({0x103ace0c0?, 0x104c93320?})
/Users/ankuragarwal/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.7.darwin-arm64/src/runtime/panic.go:791 +0x124
github.com/grafana/sobek.(*vm).handleThrow(0x14000258480, {0x103ace0c0, 0x104c93320})
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/vm.go:847 +0x3c4
github.com/grafana/sobek.(*vm).try.func1()
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/vm.go:866 +0x48
panic({0x103ace0c0?, 0x104c93320?})
/Users/ankuragarwal/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.7.darwin-arm64/src/runtime/panic.go:791 +0x124
github.com/grafana/sobek.(*vm).handleThrow(0x14000258480, {0x103ace0c0, 0x104c93320})
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/vm.go:847 +0x3c4
github.com/grafana/sobek.(*vm).runTryInner.func1()
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/vm.go:889 +0x48
panic({0x103ace0c0?, 0x104c93320?})
/Users/ankuragarwal/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.7.darwin-arm64/src/runtime/panic.go:791 +0x124
go.k6.io/k6/internal/js/modules/k6/browser/browser.mapPage.func59({0x0, 0x0}, {0x0, 0x0})
/Users/ankuragarwal/go/src/github.com/grafana/k6/internal/js/modules/k6/browser/browser/page_mapping.go:582 +0x128
reflect.Value.call({0x103aba700?, 0x140002b7980?, 0x104ed81a8?}, {0x103575271, 0x4}, {0x140006066c0, 0x2, 0x102f72694?})
/Users/ankuragarwal/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.7.darwin-arm64/src/reflect/value.go:584 +0x97c
reflect.Value.Call({0x103aba700?, 0x140002b7980?, 0x104ed81a8?}, {0x140006066c0?, 0x10524f7f8?, 0x104ecc5b8?})
/Users/ankuragarwal/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.7.darwin-arm64/src/reflect/value.go:368 +0x94
github.com/grafana/sobek.(*Runtime).newWrappedFunc.(*Runtime).wrapReflectFunc.func1({{0x103da5610, 0x140004e2570}, {0x140004df0d0, 0x0, 0x1}})
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/runtime.go:2040 +0x2cc
github.com/grafana/sobek.(*nativeFuncObject).vmCall(0x140000ffec0, 0x14000258480, 0x0)
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/func.go:571 +0x168
github.com/grafana/sobek.call.exec(0x258480?, 0x14000258480)
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/vm.go:3732 +0x74
github.com/grafana/sobek.(*vm).run(0x14000258480)
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/vm.go:642 +0x6c
github.com/grafana/sobek.(*vm).runTryInner(0x0?)
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/vm.go:893 +0x50
github.com/grafana/sobek.(*generator).step(0x140004f8700)
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/func.go:770 +0x30
github.com/grafana/sobek.(*generator).next(0x140004f8700, {0x103da5610, 0x140006063c0})
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/func.go:808 +0x178
github.com/grafana/sobek.(*asyncRunner).onFulfilled(0x140004f8700, {{0x103da5c00, 0x104d042e0}, {0x1400070e3b0, 0x1, 0x1}})
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/func.go:694 +0xd4
github.com/grafana/sobek.(*Runtime).callJobCallback(0x140006063c0?, 0x1023a6b7c?, {0x103da5c00?, 0x104d042e0?}, {0x1400070e3b0?, 0x70?, 0x140009a96e8?})
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/runtime.go:2976 +0x58
github.com/grafana/sobek.(*Promise).fulfill.(*Runtime).triggerPromiseReactions.(*Runtime).newPromiseReactionJob.func1.1()
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/builtin_promise.go:214 +0xac
github.com/grafana/sobek.(*vm).try(0x14000258480, 0x140009a9840)
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/vm.go:870 +0x1d8
github.com/grafana/sobek.(*Promise).fulfill.(*Runtime).triggerPromiseReactions.(*Runtime).newPromiseReactionJob.func1()
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/builtin_promise.go:213 +0xc0
github.com/grafana/sobek.(*Runtime).leave(0x140003bc408)
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/runtime.go:2849 +0xe0
github.com/grafana/sobek.(*Runtime).runWrapped(0x140003bc408, 0x14000600008?)
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/runtime.go:2530 +0x84
github.com/grafana/sobek.AssertFunction.func1({0x0?, 0x0?}, {0x1400070e3a0?, 0x0?, 0x0?})
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/runtime.go:2480 +0x78
github.com/grafana/sobek.(*Runtime).wrapPromiseReaction.func1({0x103aadae0?, 0x14000606240?})
/Users/ankuragarwal/go/src/github.com/grafana/k6/vendor/github.com/grafana/sobek/builtin_promise.go:602 +0xa8
go.k6.io/k6/js/promises.New.func1.1()
/Users/ankuragarwal/go/src/github.com/grafana/k6/js/promises/promises.go:37 +0x2c
go.k6.io/k6/internal/js/eventloop.(*EventLoop).Start(0x1400045b310, 0x14000562ae0)
/Users/ankuragarwal/go/src/github.com/grafana/k6/internal/js/eventloop/eventloop.go:177 +0x160
go.k6.io/k6/internal/js.(*VU).runFn(0x140005cc5a0, {0x103d8ff80, 0x140003e0190}, 0x1, 0x1400000d1b8, 0x140005e40b0, {0x140003142c0, 0x1, 0x1})
/Users/ankuragarwal/go/src/github.com/grafana/k6/internal/js/runner.go:921 +0x1f4
go.k6.io/k6/internal/js.(*ActiveVU).RunOnce(0x14000457ec0)
/Users/ankuragarwal/go/src/github.com/grafana/k6/internal/js/runner.go:854 +0x3d0
go.k6.io/k6/lib/executor.SharedIterations.Run.getIterationRunner.func8({0x103d8ff48, 0x140005d1410}, {0x103d7d740?, 0x14000457ec0?})
/Users/ankuragarwal/go/src/github.com/grafana/k6/lib/executor/helpers.go:108 +0x44
go.k6.io/k6/lib/executor.SharedIterations.Run.func6({0x103d86fa8, 0x140005cc5a0})
/Users/ankuragarwal/go/src/github.com/grafana/k6/lib/executor/shared_iterations.go:259 +0x2dc
created by go.k6.io/k6/lib/executor.SharedIterations.Run in goroutine 94
/Users/ankuragarwal/go/src/github.com/grafana/k6/lib/executor/shared_iterations.go:271 +0x880
exit status 2
We should avoid this with a clean easy to understand error that the user can work with e.g.:
missing required argument 'url'
k6 version
v1.2.0
OS
NA
Docker version and image (if applicable)
No response
Steps to reproduce the problem
NA
Expected behaviour
Returns a friendly error for the user to action on.
Actual behaviour
Panic and stack trace.
k6 version
v1.2.0
OS
NA
Docker version and image (if applicable)
No response
Steps to reproduce the problem
NA
Expected behaviour
Nice user error.
Actual behaviour
Panic and horrible stack trace.