kubeshop / xk6-tracetest

Apache License 2.0
9 stars 2 forks source link

Fatal error when running k6 load test with xk6-tracetest extension #5

Closed vladplotnik closed 1 year ago

vladplotnik commented 1 year ago

Contact Details

vlad.plotnik@gmail.com

What happened?

We use k6 and Tracetest to perform load tests of our system. Everything works great except for the time when the K6 load test fails to run due to a concurrency error. This requires starting the load test command several times in the console until it eventually starts successfully. The load test doesn't change during this time. It is also worth mentioning that the load test starts successfully if we delete the Tracetest constructor from the script.

const tracetest = Tracetest({ serverUrl: "http://localhost:11633", });

See the example of the Tracetest configuration and a sample of the load test here https://github.com/vladplotnik/k6-tracetest-load-tests

We need to use the Tracetest extension to collect traces and assert them using the Tracetest UI. Any help would be appreciated. Thank you!

Version

1.0.0 (Default)

Relevant log output

$ ./tools/k6 run --out dashboard load-test.js -o xk6-tracetest

          /\      |‾‾| /‾‾/   /‾‾/
     /\  /  \     |  |/  /   /  /
    /  \/    \    |     (   /   ‾‾\
   /          \   |  |\  \ |  (‾)  |
  / __________ \  |__| \__\ \_____/ .io

  execution: local
     script: load-test.js
     output: dashboard (:5665) http://127.0.0.1:5665, xk6-tracetest-output (TestRunID: 17318)

  scenarios: (100.00%) 1 scenario, 20 max VUs, 1m0s max duration (incl. graceful stop):
           * ramping_up_users: Up to 20 looping VUs for 30s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)

fatal error: concurrent map writes

goroutine 104 [running]:
github.com/dop251/goja.(*Runtime).fieldsInfo(0xc0023d8000, {0x21b16b0, 0x1d73880})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:671 +0xc5
github.com/dop251/goja.(*objectGoReflect).init(0xc000b4c000)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:150 +0x533
github.com/dop251/goja.(*Runtime).toValue(0xc0023d8000, {0x1d7e820?, 0xc0000fe480?}, {0x0?, 0x0?, 0xc000b10cd8?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:1821
github.com/kubeshop/xk6-tracetest/modules/tracetest.(*Tracetest).Constructor(0xc0000fe480, {0xc000b49740, {0xc000d66e30, 0x1, 0x19}, 0x0})
        github.com/kubeshop/xk6-tracetest@v0.1.4/modules/tracetest/tracetest.go:64 +0x19f
github.com/dop251/goja.(*nativeFuncObject).defaultConstruct(0x1?, 0xc0028b4c10, {0xc000d66e30, 0x1, 0x19}, 0x0)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/func.go:535 +0xa5
github.com/dop251/goja.(*Runtime).newNativeConstructor.func1({{0x21ab810, 0x2f9b640}, {0xc000d66e30, 0x1, 0x19}})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:736 +0xfe
github.com/dop251/goja.(*nativeFuncObject).vmCall(0xc000b28d20, 0xc000af2000, 0x1)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/func.go:559 +0x1af
github.com/dop251/goja.call.exec(0x9?, 0xc000af2000)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/vm.go:3366 +0x6a
github.com/dop251/goja.(*vm).run(0xc000af2000)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/vm.go:582 +0x62
github.com/dop251/goja.(*vm).runTryInner(0xc000af2000?)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/vm.go:834 +0x70
github.com/dop251/goja.(*baseJsFuncObject).__call(0xc000b34180, {0xc0012a15c0?, 0x2, 0xc000b11118?}, {0x0?, 0x0}, {0x21aae90?, 0xc000b2cc90?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/func.go:426 +0x705
github.com/dop251/goja.(*baseJsFuncObject)._call(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/func.go:442
github.com/dop251/goja.(*baseJsFuncObject).call(0xc00056e400?, {{0x21aae90, 0xc000b2cc90}, {0xc0012a15c0, 0x2, 0x2}}, {0x0?, 0x0?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/func.go:450 +0x7a
github.com/dop251/goja.(*baseJsFuncObject).Call(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/func.go:382
github.com/dop251/goja.AssertFunction.func1.1()
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2476 +0x77
github.com/dop251/goja.(*vm).try(0xc000af2000, 0xc000b11360)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).runWrapped(0xc00056e400, 0x173dc00b958?)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2520 +0x7c
github.com/dop251/goja.AssertFunction.func1({0x21aae90?, 0xc000b2cc90?}, {0xc0012a15c0?, 0x1dd39a0?, 0xc000b2cc90?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2475 +0x92
go.k6.io/k6/js/modules.(*cjsModuleInstance).execute(0xc0012a1560)
        go.k6.io/k6@v0.45.1/js/modules/cjsmodule.go:46 +0x3c3
go.k6.io/k6/js/modules.(*ModuleSystem).Require(0xc0012a1480, 0xc000b114e0?, {0xc0022ae000?, 0xc000b114d0?})
        go.k6.io/k6@v0.45.1/js/modules/resolution.go:146 +0xf1
go.k6.io/k6/js/modules.(*ModuleSystem).RunSourceData(0xc0012a1480, 0xc0006fc540)
        go.k6.io/k6@v0.45.1/js/modules/resolution.go:165 +0xd1
go.k6.io/k6/js.(*Bundle).instantiate.func3.1()
        go.k6.io/k6@v0.45.1/js/bundle.go:309 +0x2d
go.k6.io/k6/js/eventloop.(*EventLoop).Start(0xc0007cc0f0, 0xc0012a1520)
        go.k6.io/k6@v0.45.1/js/eventloop/eventloop.go:177 +0x1bd
go.k6.io/k6/js.(*Bundle).instantiate.func3()
        go.k6.io/k6@v0.45.1/js/bundle.go:306 +0xb9
go.k6.io/k6/js/common.RunWithPanicCatching({0x21afbe0?, 0xc0003c0900?}, 0xc000b2c7b0?, 0xc0012a1480?)
        go.k6.io/k6@v0.45.1/js/common/util.go:86 +0x87
go.k6.io/k6/js.(*Bundle).instantiate(0xc0000e5340, 0xc000b2c7b0, 0x6)
        go.k6.io/k6@v0.45.1/js/bundle.go:305 +0x36b
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc610?)
        go.k6.io/k6@v0.45.1/js/bundle.go:225 +0x125
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x6, 0x6, 0xc0012a4960)
        go.k6.io/k6@v0.45.1/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc65a?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c657?, 0x0?, 0xc65b?)
        go.k6.io/k6@v0.45.1/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc65b?, {0x21afaf0, 0xc000989030})
        go.k6.io/k6@v0.45.1/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/k6@v0.45.1/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/k6@v0.45.1/execution/scheduler.go:167 +0x7d

goroutine 1 [select]:
go.k6.io/k6/execution.(*Scheduler).initVUsAndExecutors(0xc000988d20, {0x219d3d0, 0xc00092dea0}, 0xc0012a4960)
        go.k6.io/k6@v0.45.1/execution/scheduler.go:280 +0x558
go.k6.io/k6/execution.(*Scheduler).Init(0xc000988d20, {0x219d478, 0xc0005a1590}, 0x0?)
        go.k6.io/k6@v0.45.1/execution/scheduler.go:402 +0x205
go.k6.io/k6/cmd.(*cmdRun).run(0xc0006f2370, 0xc0008a6780, {0xc0005980f0?, 0x1, 0x5})
        go.k6.io/k6@v0.45.1/cmd/run.go:280 +0x1232
github.com/spf13/cobra.(*Command).execute(0xc0008a6780, {0xc0005980a0, 0x5, 0x5})
        github.com/spf13/cobra@v1.4.0/command.go:856 +0x67c
github.com/spf13/cobra.(*Command).ExecuteC(0xc00083ca00)
        github.com/spf13/cobra@v1.4.0/command.go:974 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
        github.com/spf13/cobra@v1.4.0/command.go:902
go.k6.io/k6/cmd.(*rootCommand).execute(0xc00084a210)
        go.k6.io/k6@v0.45.1/cmd/root.go:104 +0x125
go.k6.io/k6/cmd.Execute()
        go.k6.io/k6@v0.45.1/cmd/root.go:137 +0x31
main.main()
        k6/main.go:12 +0x17

goroutine 9 [select]:
go.k6.io/k6/output.(*PeriodicFlusher).run(0xc000419d10)
        go.k6.io/k6@v0.45.1/output/helpers.go:67 +0xd0
created by go.k6.io/k6/output.NewPeriodicFlusher
        go.k6.io/k6@v0.45.1/output/helpers.go:102 +0x136

goroutine 23 [select]:
go.k6.io/k6/cmd.showProgress({0x219d3d0, 0xc00092da90}, 0xc0007f8b00, {0xc00281a120?, 0x2, 0x2}, {0x21afbe0?, 0xc0003c0900?})
        go.k6.io/k6@v0.45.1/cmd/ui.go:337 +0x614
go.k6.io/k6/cmd.(*cmdRun).run.func3()
        go.k6.io/k6@v0.45.1/cmd/run.go:113 +0x1e5
created by go.k6.io/k6/cmd.(*cmdRun).run
        go.k6.io/k6@v0.45.1/cmd/run.go:107 +0x57f

goroutine 51 [select]:
io.(*pipe).read(0xc000504300, {0xc0008ae000, 0x1000, 0x1?})
        io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x0?, {0xc0008ae000?, 0x0?, 0x0?})
        io/pipe.go:136 +0x25
bufio.(*Scanner).Scan(0xc0005bff28)
        bufio/scan.go:214 +0x876
github.com/sirupsen/logrus.(*Entry).writerScanner(0x0?, 0xc00059a068, 0xc0005aa100)
        github.com/sirupsen/logrus@v1.9.0/writer.go:59 +0xa5
created by github.com/sirupsen/logrus.(*Entry).WriterLevel
        github.com/sirupsen/logrus@v1.9.0/writer.go:51 +0x3d1

goroutine 52 [chan receive]:
go.k6.io/k6/cmd.(*rootCommand).setupLoggers.func2()
        go.k6.io/k6@v0.45.1/cmd/root.go:282 +0x3a
created by go.k6.io/k6/cmd.(*rootCommand).setupLoggers
        go.k6.io/k6@v0.45.1/cmd/root.go:281 +0x65b

goroutine 67 [IO wait]:
internal/poll.runtime_pollWait(0x173dc25f898, 0x72)
        runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xffffffb0ffffffa?, 0xc0008c56f0?, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.execIO(0xc002516018, 0x2003670)
        internal/poll/fd_windows.go:175 +0xf7
internal/poll.(*FD).Read(0xc002516000, {0xc000431000, 0x1800, 0x1800})
        internal/poll/fd_windows.go:436 +0x2b8
net.(*netFD).Read(0xc002516000, {0xc000431000?, 0xc000431005?, 0x1a?})
        net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc000ec62d8, {0xc000431000?, 0x7fffde007fffdd?, 0xc0016aa8b0?})
        net/net.go:183 +0x45
crypto/tls.(*atLeastReader).Read(0xc000008678, {0xc000431000?, 0xc000008678?, 0x0?})
        crypto/tls/conn.go:788 +0x3d
bytes.(*Buffer).ReadFrom(0xc0016aa990, {0x218bd40, 0xc000008678})
        bytes/buffer.go:202 +0x98
crypto/tls.(*Conn).readFromUntil(0xc0016aa700, {0x173dc25f988?, 0xc000ec62d8}, 0x1800?)
        crypto/tls/conn.go:810 +0xe5
crypto/tls.(*Conn).readRecordOrCCS(0xc0016aa700, 0x0)
        crypto/tls/conn.go:617 +0x116
crypto/tls.(*Conn).readRecord(...)
        crypto/tls/conn.go:583
crypto/tls.(*Conn).Read(0xc0016aa700, {0xc002297000, 0x1000, 0xdd10a0?})
        crypto/tls/conn.go:1316 +0x16f
bufio.(*Reader).Read(0xc0023aede0, {0xc001be3c40, 0x9, 0xdeeea5?})
        bufio/bufio.go:237 +0x1bb
io.ReadAtLeast({0x218bb20, 0xc0023aede0}, {0xc001be3c40, 0x9, 0x9}, 0x9)
        io/io.go:332 +0x9a
io.ReadFull(...)
        io/io.go:351
net/http.http2readFrameHeader({0xc001be3c40?, 0x9?, 0xc002f102a0?}, {0x218bb20?, 0xc0023aede0?})
        net/http/h2_bundle.go:1567 +0x6e
net/http.(*http2Framer).ReadFrame(0xc001be3c00)
        net/http/h2_bundle.go:1831 +0x95
net/http.(*http2clientConnReadLoop).run(0xc0008c5f98)
        net/http/h2_bundle.go:9187 +0x12e
net/http.(*http2ClientConn).readLoop(0xc002872a80)
        net/http/h2_bundle.go:9082 +0x6f
created by net/http.(*http2Transport).newClientConn
        net/http/h2_bundle.go:7779 +0xc3c

goroutine 24 [select]:
github.com/r3labs/sse/v2.(*Stream).run.func1(0xc0020dbc20)
        github.com/r3labs/sse/v2@v2.10.0/stream.go:53 +0xfa
created by github.com/r3labs/sse/v2.(*Stream).run
        github.com/r3labs/sse/v2@v2.10.0/stream.go:51 +0x65

goroutine 25 [IO wait]:
internal/poll.runtime_pollWait(0x173dc25f7a8, 0x72)
        runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc0009f7c08?, 0xa565f0?, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.execIO(0xc0009b2a18, 0xc0009f7bf0)
        internal/poll/fd_windows.go:175 +0xf7
internal/poll.(*FD).acceptOne(0xc0009b2a00, 0x46c, {0xc000bd84b0?, 0xa4e16a?, 0x173dc0c6ea8?}, 0x173b62f0108?)
        internal/poll/fd_windows.go:936 +0x6d
internal/poll.(*FD).Accept(0xc0009b2a00, 0xc0009f7dc8)
        internal/poll/fd_windows.go:970 +0x1d6
net.(*netFD).accept(0xc0009b2a00)
        net/fd_windows.go:139 +0x65
net.(*TCPListener).accept(0xc0023b1158)
        net/tcpsock_posix.go:148 +0x25
net.(*TCPListener).Accept(0xc0023b1158)
        net/tcpsock.go:297 +0x3d
net/http.(*Server).Serve(0xc0007f7a40, {0x219c4e0, 0xc0023b1158})
        net/http/server.go:3059 +0x385
github.com/grafana/xk6-dashboard/dashboard.(*webServer).listenAndServe.func1()
        github.com/grafana/xk6-dashboard@v0.5.2/dashboard/web.go:53 +0x85
created by github.com/grafana/xk6-dashboard/dashboard.(*webServer).listenAndServe
        github.com/grafana/xk6-dashboard@v0.5.2/dashboard/web.go:50 +0xbb

goroutine 26 [select]:
go.k6.io/k6/output.(*PeriodicFlusher).run(0xc000985020)
        go.k6.io/k6@v0.45.1/output/helpers.go:67 +0xd0
created by go.k6.io/k6/output.NewPeriodicFlusher
        go.k6.io/k6@v0.45.1/output/helpers.go:102 +0x136

goroutine 27 [select]:
go.k6.io/k6/output.(*PeriodicFlusher).run(0xc000985050)
        go.k6.io/k6@v0.45.1/output/helpers.go:67 +0xd0
created by go.k6.io/k6/output.NewPeriodicFlusher
        go.k6.io/k6@v0.45.1/output/helpers.go:102 +0x136

goroutine 28 [select]:
go.k6.io/k6/output.(*Manager).Start.func2()
        go.k6.io/k6@v0.45.1/output/manager.go:63 +0x172
created by go.k6.io/k6/output.(*Manager).Start
        go.k6.io/k6@v0.45.1/output/manager.go:56 +0x14a

goroutine 29 [select]:
go.k6.io/k6/metrics/engine.(*MetricsEngine).StartThresholdCalculations.func1()
        go.k6.io/k6@v0.45.1/metrics/engine/engine.go:187 +0x127
created by go.k6.io/k6/metrics/engine.(*MetricsEngine).StartThresholdCalculations
        go.k6.io/k6@v0.45.1/metrics/engine/engine.go:181 +0xf8

goroutine 30 [IO wait]:
internal/poll.runtime_pollWait(0x173dc25f6b8, 0x72)
        runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc0009d5b68?, 0xa565f0?, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.execIO(0xc0009de018, 0xc0009d5b50)
        internal/poll/fd_windows.go:175 +0xf7
internal/poll.(*FD).acceptOne(0xc0009de000, 0x474, {0xc0009e2000?, 0xa4e16a?, 0x173dc100be8?}, 0x173b62f0eb8?)
        internal/poll/fd_windows.go:936 +0x6d
internal/poll.(*FD).Accept(0xc0009de000, 0xc0009d5d28)
        internal/poll/fd_windows.go:970 +0x1d6
net.(*netFD).accept(0xc0009de000)
        net/fd_windows.go:139 +0x65
net.(*TCPListener).accept(0xc00079c030)
        net/tcpsock_posix.go:148 +0x25
net.(*TCPListener).Accept(0xc00079c030)
        net/tcpsock.go:297 +0x3d
net/http.(*Server).Serve(0xc00243a870, {0x219c4e0, 0xc00079c030})
        net/http/server.go:3059 +0x385
net/http.(*Server).ListenAndServe(0xc00243a870)
        net/http/server.go:2988 +0x7d
go.k6.io/k6/cmd.(*cmdRun).run.func9()
        go.k6.io/k6@v0.45.1/cmd/run.go:235 +0x131
created by go.k6.io/k6/cmd.(*cmdRun).run
        go.k6.io/k6@v0.45.1/cmd/run.go:232 +0xefd

goroutine 31 [chan receive]:
go.k6.io/k6/cmd.(*cmdRun).run.func10()
        go.k6.io/k6@v0.45.1/cmd/run.go:247 +0xa5
created by go.k6.io/k6/cmd.(*cmdRun).run
        go.k6.io/k6@v0.45.1/cmd/run.go:245 +0xffd

goroutine 54 [select]:
go.k6.io/k6/js.(*Bundle).instantiate.func2()
        go.k6.io/k6@v0.45.1/js/bundle.go:296 +0x86
created by go.k6.io/k6/js.(*Bundle).instantiate
        go.k6.io/k6@v0.45.1/js/bundle.go:295 +0x2ca

goroutine 32 [syscall]:
os/signal.signal_recv()
        runtime/sigqueue.go:152 +0x2f
os/signal.loop()
        os/signal/signal_unix.go:23 +0x19
created by os/signal.Notify.func1.1
        os/signal/signal.go:151 +0x2a

goroutine 33 [select]:
go.k6.io/k6/cmd.handleTestAbortSignals.func1()
        go.k6.io/k6@v0.45.1/cmd/common.go:96 +0xa5
created by go.k6.io/k6/cmd.handleTestAbortSignals
        go.k6.io/k6@v0.45.1/cmd/common.go:95 +0x1aa

goroutine 98 [select]:
go.k6.io/k6/execution.(*Scheduler).emitVUsAndVUsMax.func2()
        go.k6.io/k6@v0.45.1/execution/scheduler.go:237 +0x118
created by go.k6.io/k6/execution.(*Scheduler).emitVUsAndVUsMax
        go.k6.io/k6@v0.45.1/execution/scheduler.go:229 +0x215

goroutine 99 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc002f0ee80?, 0xad?, 0x1bfcce0?)
        runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0x2f40e80)
        sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
        sync/mutex.go:90
reflect.FuncOf({0xc0013621c0, 0x2, 0xa565f0?}, {0x2f9ba78, 0x0, 0xa440d2?}, 0x0)
        reflect/type.go:2084 +0x54b
reflect.(*rtype).Method(0x1d00c20, 0x0)
        reflect/type.go:869 +0x4ca
github.com/dop251/goja.(*Runtime).buildMethodsInfo(0xc000101000, {0x21b16b0, 0x1d00c20})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:634 +0x15c
github.com/dop251/goja.(*Runtime).methodsInfo(0xc000101000, {0x21b16b0, 0x1d00c20})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:680 +0x5e
github.com/dop251/goja.(*objectGoReflect).init(0xc00100e460)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:162 +0x62f
github.com/dop251/goja.(*Runtime).toValue(0xc000101000, {0x1d00c20?, 0x2cf2554?}, {0x0?, 0x0?, 0x6?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:1821
github.com/dop251/goja.(*Object).Set.func1()
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/value.go:880 +0x71
github.com/dop251/goja.(*vm).try(0xc002f12240, 0xc002f0f590)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).try(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2596
github.com/dop251/goja.(*Object).Set(0x1d00c20?, {0x1b77480?, 0xc?}, {0x1d00c20?, 0x2cf2554?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/value.go:879 +0x73
go.k6.io/k6/js.(*Bundle).Instantiate.func1({0x1b77480?, 0xc00238b870?}, {0x1d00c20?, 0x2cf2554?})
        go.k6.io/k6@v0.45.1/js/bundle.go:253 +0x45
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/k6@v0.45.1/lib/options.go:562 +0x556
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc31a?)
        go.k6.io/k6@v0.45.1/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x5, 0x5, 0xc0012a4960)
        go.k6.io/k6@v0.45.1/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc323?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c323?, 0x0?, 0xc324?)
        go.k6.io/k6@v0.45.1/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc328?, {0x21afaf0, 0xc000989030})
        go.k6.io/k6@v0.45.1/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/k6@v0.45.1/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/k6@v0.45.1/execution/scheduler.go:167 +0x7d

goroutine 100 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000b0ce80?, 0xf6?, 0x1bfcce0?)
        runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0x2f40e80)
        sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
        sync/mutex.go:90
reflect.FuncOf({0xc0023b8fc0, 0x1, 0x1b?}, {0xc0023b8fd0, 0x1, 0x1b?}, 0x0)
        reflect/type.go:2084 +0x54b
reflect.(*rtype).Method(0x1c78080, 0x1)
        reflect/type.go:869 +0x4ca
github.com/dop251/goja.(*Runtime).buildMethodsInfo(0xc002324800, {0x21b16b0, 0x1c78080})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:634 +0x15c
github.com/dop251/goja.(*Runtime).methodsInfo(0xc002324800, {0x21b16b0, 0x1c78080})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:680 +0x5e
github.com/dop251/goja.(*objectGoReflect).init(0xc00100e380)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:162 +0x62f
github.com/dop251/goja.(*Runtime).toValue(0xc002324800, {0x1cadd60?, 0xc000975da0?}, {0x0?, 0x0?, 0x6?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:1821
github.com/dop251/goja.(*Object).Set.func1()
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/value.go:880 +0x71
github.com/dop251/goja.(*vm).try(0xc000660000, 0xc000b0d590)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).try(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2596
github.com/dop251/goja.(*Object).Set(0x1cadd60?, {0x1b3a7e8?, 0xb?}, {0x1cadd60?, 0xc000975da0?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/value.go:879 +0x73
go.k6.io/k6/js.(*Bundle).Instantiate.func1({0x1b3a7e8?, 0xc0010262d0?}, {0x1cadd60?, 0xc000975da0?})
        go.k6.io/k6@v0.45.1/js/bundle.go:253 +0x45
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/k6@v0.45.1/lib/options.go:562 +0x556
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc010?)
        go.k6.io/k6@v0.45.1/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x7, 0x7, 0xc0012a4960)
        go.k6.io/k6@v0.45.1/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc0bc?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c0c1?, 0x0?, 0xc0bd?)
        go.k6.io/k6@v0.45.1/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc0c1?, {0x21afaf0, 0xc000989030})
        go.k6.io/k6@v0.45.1/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/k6@v0.45.1/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/k6@v0.45.1/execution/scheduler.go:167 +0x7d

goroutine 101 [runnable]:
sync.runtime_SemacquireMutex(0xc001ae2e80?, 0xf6?, 0x1bfcce0?)
        runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0x2f40e80)
        sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
        sync/mutex.go:90
reflect.FuncOf({0xc002378eb0, 0x1, 0x1b?}, {0xc002378ec0, 0x1, 0x1b?}, 0x0)
        reflect/type.go:2084 +0x54b
reflect.(*rtype).Method(0x1c78080, 0x1)
        reflect/type.go:869 +0x4ca
github.com/dop251/goja.(*Runtime).buildMethodsInfo(0xc0007ba000, {0x21b16b0, 0x1c78080})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:634 +0x15c
github.com/dop251/goja.(*Runtime).methodsInfo(0xc0007ba000, {0x21b16b0, 0x1c78080})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:680 +0x5e
github.com/dop251/goja.(*objectGoReflect).init(0xc000bc8380)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:162 +0x62f
github.com/dop251/goja.(*Runtime).toValue(0xc0007ba000, {0x1cadd60?, 0xc000975da0?}, {0x0?, 0x0?, 0x6?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:1821
github.com/dop251/goja.(*Object).Set.func1()
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/value.go:880 +0x71
github.com/dop251/goja.(*vm).try(0xc000b98000, 0xc001ae3590)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).try(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2596
github.com/dop251/goja.(*Object).Set(0x1cadd60?, {0x1b3a7e8?, 0xb?}, {0x1cadd60?, 0xc000975da0?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/value.go:879 +0x73
go.k6.io/k6/js.(*Bundle).Instantiate.func1({0x1b3a7e8?, 0xc000bf02d0?}, {0x1cadd60?, 0xc000975da0?})
        go.k6.io/k6@v0.45.1/js/bundle.go:253 +0x45
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/k6@v0.45.1/lib/options.go:562 +0x556
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc181?)
        go.k6.io/k6@v0.45.1/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x2, 0x2, 0xc0012a4960)
        go.k6.io/k6@v0.45.1/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc189?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c18a?, 0x0?, 0xc18a?)
        go.k6.io/k6@v0.45.1/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc192?, {0x21afaf0, 0xc000989030})
        go.k6.io/k6@v0.45.1/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/k6@v0.45.1/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/k6@v0.45.1/execution/scheduler.go:167 +0x7d

goroutine 102 [runnable]:
reflect.(*rtype).Method(0x1d00c20, 0x3)
        reflect/type.go:860 +0x187
github.com/dop251/goja.(*Runtime).buildMethodsInfo(0xc0023d8000, {0x21b16b0, 0x1d00c20})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:634 +0x15c
github.com/dop251/goja.(*Runtime).methodsInfo(0xc0023d8000, {0x21b16b0, 0x1d00c20})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:680 +0x5e
github.com/dop251/goja.(*objectGoReflect).init(0xc001c8f880)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:162 +0x62f
github.com/dop251/goja.(*Runtime).toValue(0xc0023d8000, {0x1d00c20?, 0x2cf2554?}, {0x0?, 0x0?, 0x6?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:1821
github.com/dop251/goja.(*Object).Set.func1()
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/value.go:880 +0x71
github.com/dop251/goja.(*vm).try(0xc001ade000, 0xc001ae7590)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).try(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2596
github.com/dop251/goja.(*Object).Set(0x1d00c20?, {0x1b77480?, 0xc?}, {0x1d00c20?, 0x2cf2554?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/value.go:879 +0x73
go.k6.io/k6/js.(*Bundle).Instantiate.func1({0x1b77480?, 0xc000f1a470?}, {0x1d00c20?, 0x2cf2554?})
        go.k6.io/k6@v0.45.1/js/bundle.go:253 +0x45
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/k6@v0.45.1/lib/options.go:562 +0x556
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc7e7?)
        go.k6.io/k6@v0.45.1/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x3, 0x3, 0xc0012a4960)
        go.k6.io/k6@v0.45.1/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc7f0?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c7f0?, 0x0?, 0xc7f1?)
        go.k6.io/k6@v0.45.1/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc7f4?, {0x21afaf0, 0xc000989030})
        go.k6.io/k6@v0.45.1/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/k6@v0.45.1/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/k6@v0.45.1/execution/scheduler.go:167 +0x7d

goroutine 103 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc0008bee80?, 0xad?, 0x1bfcce0?)
        runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0x2f40e80)
        sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
        sync/mutex.go:90
reflect.FuncOf({0xc0012f5a80, 0x2, 0xa565f0?}, {0x2f9ba78, 0x0, 0xa440d2?}, 0x0)
        reflect/type.go:2084 +0x54b
reflect.(*rtype).Method(0x1d00c20, 0x0)
        reflect/type.go:869 +0x4ca
github.com/dop251/goja.(*Runtime).buildMethodsInfo(0xc000820800, {0x21b16b0, 0x1d00c20})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:634 +0x15c
github.com/dop251/goja.(*Runtime).methodsInfo(0xc000820800, {0x21b16b0, 0x1d00c20})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:680 +0x5e
github.com/dop251/goja.(*objectGoReflect).init(0xc0008f01c0)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/object_goreflect.go:162 +0x62f
github.com/dop251/goja.(*Runtime).toValue(0xc000820800, {0x1d00c20?, 0x2cf2554?}, {0x0?, 0x0?, 0x6?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:1821
github.com/dop251/goja.(*Object).Set.func1()
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/value.go:880 +0x71
github.com/dop251/goja.(*vm).try(0xc000890a20, 0xc0008bf590)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).try(...)
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/runtime.go:2596
github.com/dop251/goja.(*Object).Set(0x1d00c20?, {0x1b77480?, 0xc?}, {0x1d00c20?, 0x2cf2554?})
        github.com/dop251/goja@v0.0.0-20230531210528-d7324b2d74f7/value.go:879 +0x73
go.k6.io/k6/js.(*Bundle).Instantiate.func1({0x1b77480?, 0xc002516bf0?}, {0x1d00c20?, 0x2cf2554?})
        go.k6.io/k6@v0.45.1/js/bundle.go:253 +0x45
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/k6@v0.45.1/lib/options.go:562 +0x556
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc8b8?)
        go.k6.io/k6@v0.45.1/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x4, 0x4, 0xc0012a4960)
        go.k6.io/k6@v0.45.1/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc8bc?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c8c1?, 0x0?, 0xc8bd?)
        go.k6.io/k6@v0.45.1/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc8c1?, {0x21afaf0, 0xc000989030})
        go.k6.io/k6@v0.45.1/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/k6@v0.45.1/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/k6@v0.45.1/execution/scheduler.go:167 +0x7d

goroutine 105 [runnable]:
reflect.(*structType).FieldByNameFunc(0x1cbbfe0?, 0xc000f29300)
        reflect/type.go:1397 +0x447
reflect.(*structType).FieldByName(0x1d4b220, {0x1e24ab2, 0x5})
        reflect/type.go:1433 +0x27a
reflect.(*rtype).FieldByName(0x0?, {0x1e24ab2?, 0x57?})
        reflect/type.go:1003 +0x98
reflect.Value.FieldByName({0x1d4b220?, 0xc002f501a2?, 0x0?}, {0x1e24ab2?, 0x21b16b0?})
        reflect/value.go:1346 +0x9f
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/k6@v0.45.1/lib/options.go:538 +0x3f8
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc71a?)
        go.k6.io/k6@v0.45.1/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x8, 0x8, 0xc0012a4960)
        go.k6.io/k6@v0.45.1/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc723?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c723?, 0x0?, 0xc724?)
        go.k6.io/k6@v0.45.1/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc728?, {0x21afaf0, 0xc000989030})
        go.k6.io/k6@v0.45.1/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/k6@v0.45.1/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/k6@v0.45.1/execution/scheduler.go:167 +0x7d

goroutine 106 [runnable]:
go.k6.io/k6/lib.NewVUStateTags(...)
        go.k6.io/k6@v0.45.1/lib/vu_state.go:95
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x1, 0x1, 0xc0012a4960)
        go.k6.io/k6@v0.45.1/js/runner.go:247 +0x926
go.k6.io/k6/js.(*Runner).NewVU(0xcb23?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000cb23?, 0x0?, 0xcb24?)
        go.k6.io/k6@v0.45.1/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xcb28?, {0x21afaf0, 0xc000989030})
        go.k6.io/k6@v0.45.1/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/k6@v0.45.1/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/k6@v0.45.1/execution/scheduler.go:167 +0x7d

goroutine 107 [select]:
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func2()
        go.k6.io/k6@v0.45.1/execution/scheduler.go:181 +0x11b
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/k6@v0.45.1/execution/scheduler.go:178 +0x20d

goroutine 38 [runnable]:
go.k6.io/k6/js.(*Bundle).instantiate.func2()
        go.k6.io/k6@v0.45.1/js/bundle.go:296 +0x86
created by go.k6.io/k6/js.(*Bundle).instantiate
        go.k6.io/k6@v0.45.1/js/bundle.go:295 +0x2ca

Code of Conduct

mathnogueira commented 1 year ago

I was taking a look at K6 and Goja sources and they are not thread-safe. This happens because Goja caches information about each field in the toValue(param) parameter in the Runtime object. I suspect that the Tracetest module's Constructor function is being called several times in parallel by k6, thus making this issue happen.

Adding a mutex to protect the return rt.ToValue(t).ToObject(rt) call would probably solve this issue.

@danielbdias @xoscar can you confirm this?

xoscar commented 1 year ago

@mathnogueira yes it makes sense, we can try that fix

danielbdias commented 1 year ago

Folks, based on our discussion I've opened #6 to solve that. Adding a mutex on the constructor solves the problem.

danielbdias commented 1 year ago

Released version v0.1.6 with hotfix.

@vladplotnik if you have the opportunity, can you check if your load test works with this new release?

vladplotnik commented 1 year ago

@danielbdias, I have tried the new version. It works as expected and starts the load test immediately. Kudos for the super-fast hotfix! 🙌