K6: Invalid memory address or nil pointer dereference when running in k8s

Created on 12 Sep 2019  路  18Comments  路  Source: loadimpact/k6

I'm getting this error when running a test from a k8s cluster, but not when running locally through CLI non-container. The script only uses 1 VU.

k6v 0.25.1

Looks similar to this issue fixed earlier this year https://github.com/loadimpact/k6/issues/825

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
    panic: Panic at 35: runtime error: invalid memory address or nil pointer dereference [recovered]
    panic: Panic at 35: runtime error: invalid memory address or nil pointer dereference [recovered]
    panic: Panic at 10: Panic at 35: runtime error: invalid memory address or nil pointer dereference [recovered]
    panic: Panic at 10: Panic at 35: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x9f7145]

goroutine 77 [running]:
github.com/loadimpact/k6/vendor/github.com/dop251/goja.AssertFunction.func1.1(0xc003541d30)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/runtime.go:1407 +0x98
panic(0xd45020, 0xc000d4a450)
    /usr/local/go/src/runtime/panic.go:679 +0x1b2
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm).try.func1(0xc004d960d0, 0x0, 0xc003541c00, 0x0, 0x0, 0x0, 0xc003541c58)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:364 +0x496
panic(0xd45020, 0xc000d4a430)
    /usr/local/go/src/runtime/panic.go:679 +0x1b2
github.com/loadimpact/k6/vendor/github.com/dop251/goja.AssertFunction.func1.1(0xc003541278)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/runtime.go:1407 +0x98
panic(0xd45020, 0xc000d4a430)
    /usr/local/go/src/runtime/panic.go:679 +0x1b2
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm).try.func1(0xc004d960d0, 0x3, 0xc003541148, 0x12, 0x0, 0x0, 0xc0035411a0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:364 +0x496
panic(0xd59960, 0x192dc00)
    /usr/local/go/src/runtime/panic.go:679 +0x1b2
github.com/loadimpact/k6/lib/netext/httpext.(*Tracer).GotConn(0xc004beda00, 0x0, 0x0, 0xc007000101, 0xf1c04087b)
    /go/src/github.com/loadimpact/k6/lib/netext/httpext/tracer.go:230 +0x45
net/http.(*Transport).getConn(0xc004e30000, 0xc004551d10, 0x0, 0xc00272dbc0, 0x5, 0xc005e46300, 0x10, 0x0, 0x0, 0x0, ...)
    /usr/local/go/src/net/http/transport.go:1210 +0x394
net/http.(*Transport).roundTrip(0xc004e30000, 0xc00177ca00, 0xe24d80, 0xc0041f8f01, 0xc004bedb00)
    /usr/local/go/src/net/http/transport.go:522 +0x603
net/http.(*Transport).RoundTrip(0xc004e30000, 0xc00177ca00, 0xc004beda80, 0x10aa300, 0xc004436630)
    /usr/local/go/src/net/http/roundtrip.go:17 +0x35
github.com/loadimpact/k6/lib/netext/httpext.(*transport).RoundTrip(0xc0041f85a0, 0xc00177c800, 0xc0041f85a0, 0xbf5678e4dc20aec2, 0x1e53b4209d)
    /go/src/github.com/loadimpact/k6/lib/netext/httpext/transport.go:191 +0x190
net/http.send(0xc00177c700, 0x1097500, 0xc0041f85a0, 0xbf5678e4dc20aec2, 0x1e53b4209d, 0x19453c0, 0xc0041f8800, 0xc0035401e0, 0x4, 0x10)
    /usr/local/go/src/net/http/client.go:250 +0x43a
net/http.(*Client).send(0xc00443df80, 0xc00177c700, 0xbf5678e4dc20aec2, 0x1e53b4209d, 0x19453c0, 0xc0041f8800, 0x2, 0x4, 0x0)
    /usr/local/go/src/net/http/client.go:174 +0xfa
net/http.(*Client).do(0xc00443df80, 0xc00177c700, 0x0, 0x0, 0x0)
    /usr/local/go/src/net/http/client.go:641 +0x3ce
net/http.(*Client).Do(...)
    /usr/local/go/src/net/http/client.go:509
github.com/loadimpact/k6/lib/netext/httpext.MakeRequest(0x10aa300, 0xc004a2faa0, 0xc004bed680, 0xe869c1, 0x3, 0xc004bed600)
    /go/src/github.com/loadimpact/k6/lib/netext/httpext/request.go:288 +0x816
github.com/loadimpact/k6/js/modules/k6/http.(*HTTP).Request(0xc0000fa000, 0x10aa300, 0xc004a2faa0, 0xe869c1, 0x3, 0x10b70c0, 0xc000de8530, 0xc0041f84c0, 0x2, 0x2, ...)
    /go/src/github.com/loadimpact/k6/js/modules/k6/http/request.go:111 +0x17d
github.com/loadimpact/k6/js/modules/k6/http.(*HTTP).Get(0xc0000fa000, 0x10aa300, 0xc004a2faa0, 0x10b70c0, 0xc000de8530, 0xc000de8550, 0x1, 0x1, 0x0, 0x0, ...)
    /go/src/github.com/loadimpact/k6/js/modules/k6/http/request.go:53 +0x15b
reflect.Value.call(0xe221c0, 0xc0000fa000, 0x1213, 0xe8c2e5, 0x9, 0xc0046e7cc0, 0x3, 0x3, 0xb, 0xdf1340, ...)
    /usr/local/go/src/reflect/value.go:460 +0x5f6
reflect.Value.CallSlice(0xe221c0, 0xc0000fa000, 0x1213, 0xc0046e7cc0, 0x3, 0x3, 0x194, 0xc003540c98, 0x8c29d3)
    /usr/local/go/src/reflect/value.go:334 +0xb4
github.com/loadimpact/k6/js/common.Bind.func1(0x10b6ee0, 0xc00389fd60, 0xc006356220, 0x2, 0xbc, 0x409b1b, 0x10)
    /go/src/github.com/loadimpact/k6/js/common/bridge.go:239 +0x780
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm)._nativeCall(0xc004d960d0, 0xc00291d1e0, 0x2)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:1826 +0x291
github.com/loadimpact/k6/vendor/github.com/dop251/goja.call.exec(0xffffffff00000002, 0xc004d960d0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:1810 +0x4a2
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm).run(0xc004d960d0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:288 +0x51
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*funcObject).Call(0xc004885680, 0x10b7520, 0x19643a0, 0x0, 0x0, 0x0, 0x10b7520, 0x19643a0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/func.go:130 +0x2cc
github.com/loadimpact/k6/vendor/github.com/dop251/goja.AssertFunction.func1.2()
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/runtime.go:1412 +0x96
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm).try(0xc004d960d0, 0xc0035411f0, 0x0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:370 +0x147
github.com/loadimpact/k6/vendor/github.com/dop251/goja.AssertFunction.func1(0x10b7520, 0x19643a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/runtime.go:1411 +0x13a
github.com/loadimpact/k6/js/modules/k6.(*K6).Group(0x19645f8, 0x10aa300, 0xc004a2faa0, 0xc003ec854b, 0x9, 0xc004201d40, 0x0, 0x0, 0x0, 0x0)
    /go/src/github.com/loadimpact/k6/js/modules/k6/k6.go:90 +0x1c9
reflect.Value.call(0xda0d60, 0x19645f8, 0xa13, 0xe86e70, 0x4, 0xc0046e6f50, 0x3, 0x3, 0xce11e0, 0xc00000e050, ...)
    /usr/local/go/src/reflect/value.go:460 +0x5f6
reflect.Value.Call(0xda0d60, 0x19645f8, 0xa13, 0xc0046e6f50, 0x3, 0x3, 0x0, 0xe48f40, 0xc004201c60)
    /usr/local/go/src/reflect/value.go:321 +0xb4
github.com/loadimpact/k6/js/common.Bind.func1(0x10b7520, 0x19643a0, 0xc006356100, 0x2, 0xce, 0xc004838fc0, 0xc003541968)
    /go/src/github.com/loadimpact/k6/js/common/bridge.go:241 +0x9bc
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm)._nativeCall(0xc004d960d0, 0xc00291c8f0, 0x2)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:1826 +0x291
github.com/loadimpact/k6/vendor/github.com/dop251/goja.call.exec(0x2, 0xc004d960d0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:1810 +0x4a2
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm).run(0xc004d960d0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:288 +0x51
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*funcObject).Call(0xc000c2b800, 0x10b7520, 0x19643a0, 0xc00320c2c0, 0x1, 0x1, 0x10b7520, 0x19643a0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/func.go:130 +0x2cc
github.com/loadimpact/k6/vendor/github.com/dop251/goja.AssertFunction.func1.2()
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/runtime.go:1412 +0x96
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm).try(0xc004d960d0, 0xc003541ca8, 0x0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:370 +0x147
github.com/loadimpact/k6/vendor/github.com/dop251/goja.AssertFunction.func1(0x10b7520, 0x19643a0, 0xc00320c2c0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/runtime.go:1411 +0x13a
github.com/loadimpact/k6/js.(*VU).runFn(0xc0011c73b0, 0x10aa240, 0xc0019606c0, 0xc003060b40, 0xc000f03e60, 0xc00320c2c0, 0x1, 0x1, 0x0, 0x0, ...)
    /go/src/github.com/loadimpact/k6/js/runner.go:444 +0x392
github.com/loadimpact/k6/js.(*VU).RunOnce(0xc0011c73b0, 0x10aa240, 0xc0019606c0, 0x0, 0x0)
    /go/src/github.com/loadimpact/k6/js/runner.go:404 +0x202
github.com/loadimpact/k6/core/local.(*vuHandle).run(0xc004d69000, 0xc000126000, 0xc004b6c4e0, 0xc0000aa5a0)
    /go/src/github.com/loadimpact/k6/core/local/local.go:71 +0x152
github.com/loadimpact/k6/core/local.(*Executor).scale.func1(0xc004d69000, 0xc004d8f7a0, 0xc004b6c4e0, 0xc0000aa5a0)
    /go/src/github.com/loadimpact/k6/core/local/local.go:361 +0x4d
created by github.com/loadimpact/k6/core/local.(*Executor).scale
    /go/src/github.com/loadimpact/k6/core/local/local.go:360 +0x328
npm ERR! code ELIFECYCLE
npm ERR! errno 2
bug high prio

Most helpful comment

This is go1.13 regression, see https://github.com/golang/go/issues/34282

All 18 comments

@ub-ssuch Can you provide minimal script you used to trigger this panic?

It seems that for some strange reason, info.Conn is nil here: https://github.com/loadimpact/k6/blob/515452f1a93a271ed8a3785111726c7cfe92232d/lib/netext/httpext/tracer.go#L230

We can easily add a check for that, but it's quite strange and we should investigate the underlying cause before just fixing/masking it :confused:

It seems that for some strange reason, info.Conn is nil here:

https://github.com/loadimpact/k6/blob/515452f1a93a271ed8a3785111726c7cfe92232d/lib/netext/httpext/tracer.go#L230

We can easily add a check for that, but it's quite strange and we should investigate the underlying cause before just fixing/masking it

Yes, I have a fix locally for checking info.Conn == nil. Trying to re-produce myself to understanding the problem deeper all the morning but can't.

@ub-ssuch, have you by chance compiled your own version of k6 v0.25.1? I'm asking, since the official k6 v0.25.1 binary and docker container were compiled with Go 1.12, while your stack trace matches the Go 1.13 source much more closely:

@na-- So, reading the document https://golang.org/pkg/net/http/httptrace/#GotConnInfo

// Conn is the connection that was obtained. It is owned by
// the http.Transport and should not be read, written or
// closed by users of ClientTrace.

We do read + write to GotConnInfo.Conn, so a guarding should be added.

We do read + write to GotConnInfo.Conn, so a guarding should be added.

Where exactly do we do that? I don't see any reading or writing, just trying to get the RemoteAddr()...

We do read + write to GotConnInfo.Conn, so a guarding should be added.

Where exactly do we do that? I don't see any reading or writing, just trying to get the RemoteAddr()...

Sorry, it's not writing, but reading, right at the line you pointed above:

t.connRemoteAddr = info.Conn.RemoteAddr()

info.Conn.RemoteAddrr() means we are trying to read information from GotConnInfo.

I don't think so, in my head it means getting metadata about the connection. In this context, "read, written or closed" very likely means using the Read() and Write() or Close() methods of info.Conn, which is after all a net.Conn type :wink:

I don't think so, in my head it means getting metadata about the connection. In this context, "read, written or closed" very likely means using the Read() and Write() or Close() methods of info.Conn, which is after all a net.Conn type

And also, I did a quick search in standard library for the place where GotConnInfo occurs, it's never be read or write to the Conn field https://github.com/golang/go/search?q=GotConnInfo&unscoped_q=GotConnInfo

Not sure what you're getting at - RemoteAddr() doesn't read anything :confused: . For example see the net.TCPConn implementation, it just returns a struct property: https://golang.org/src/net/net.go?s=7650:7682#L218

And in any case, this doesn't have anything to do with why info.Conn is nil in our case...

Not sure what you're getting at - RemoteAddr() doesn't read anything 馃槙 . For example see the net.TCPConn implementation, it just returns a struct property: https://golang.org/src/net/net.go?s=7650:7682#L218

And in any case, this doesn't have anything to do with why info.Conn is nil in our case...

I mean the standard lib never access info.Conn, since when it belongs to Transport, there's no guarantee that it's non-nil.

:confused: The standard library doesn't itself use httptrace or httptrace.GotConnInfo()... It provides that tracing mechanism so that HTTP clients like k6 can monitor and trace what's happening with their HTTP requests. So it makes absolutely no sense that the network connection we receive in the GotConn() hook is nil. You don't need to believe me, this is the documentation for GotConn():

GotConn is called after a successful connection is obtained. There is no hook for failure to obtain a connection; instead, use the error from Transport.RoundTrip

What's more, as I linked above, line 1210 of /src/net/http/transport.go is the previously item in the panic stacktrace. And as you can see from that link, the trace.GotConn() call on that line is surrounded in the following if delivered := t.queueForIdleConn(w); delivered { /* trace.GotConn() called */ } clause. The documentation for queueForIdleConn is:

queueForIdleConn queues w to receive the next idle connection for w.cm. As an optimization hint to the caller, queueForIdleConn reports whether it successfully delivered an already-idle connection.

So... we shouldn't be getting a nil connection, but we are. That's why I asked @ub-ssuch if the k6 version they're using was compiled with Go 1.13, since this seems like a fresh bug. We haven't seen this panic with millions and millions of requests made by k6 versions compiled with Go 1.12 and below, and we would have seen it if it occured, given that it's a straight up nil pointer one...

As I mentioned on slack, this seems like a likely cause for the regression: https://github.com/golang/go/commit/fbaf881cc62bd0e1f4c5e608217fd52106438dbb

One more example of a panic (possibly related). Running on a Debian machine.

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
    panic: Panic at 20: runtime error: invalid memory address or nil pointer dereference [recovered]
    panic: Panic at 20: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x9f7145]

goroutine 66922 [running]:
github.com/loadimpact/k6/vendor/github.com/dop251/goja.AssertFunction.func1.1(0xc00b5a3d30)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/runtime.go:1407 +0x98
panic(0xd45020, 0xc00b50d7d0)
    /usr/local/go/src/runtime/panic.go:679 +0x1b2
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm).try.func1(0xc0059dca90, 0x0, 0xc00b5a3c00, 0x0, 0x0, 0x0, 0xc00b5a3c58)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:364 +0x496
panic(0xd59960, 0x192dc00)
    /usr/local/go/src/runtime/panic.go:679 +0x1b2
github.com/loadimpact/k6/lib/netext/httpext.(*Tracer).GotConn(0xc00b59a080, 0x0, 0x0, 0xc00b100101, 0x2f66ae953e)
    /go/src/github.com/loadimpact/k6/lib/netext/httpext/tracer.go:230 +0x45
net/http.(*Transport).getConn(0xc0041c2c80, 0xc00b5475c0, 0x0, 0xc00b4e96e0, 0x5, 0xc00b5207c0, 0x1b, 0x0, 0x0, 0x0, ...)
    /usr/local/go/src/net/http/transport.go:1210 +0x394
net/http.(*Transport).roundTrip(0xc0041c2c80, 0xc00b4a4500, 0x80, 0x107db0a, 0xc00003fbc0)
    /usr/local/go/src/net/http/transport.go:522 +0x603
net/http.(*Transport).RoundTrip(0xc0041c2c80, 0xc00b4a4500, 0xc00b59a000, 0x10aa300, 0xc00b547590)
    /usr/local/go/src/net/http/roundtrip.go:17 +0x35
github.com/loadimpact/k6/lib/netext/httpext.(*transport).RoundTrip(0xc00b5981c0, 0xc00b4a4400, 0xc00b5981c0, 0xbf56b58d8bc2b9de, 0xac8fa09661)
    /go/src/github.com/loadimpact/k6/lib/netext/httpext/transport.go:191 +0x190
net/http.send(0xc00b4a4300, 0x1097500, 0xc00b5981c0, 0xbf56b58d8bc2b9de, 0xac8fa09661, 0x19453c0, 0xc00a0636b0, 0xbf56b58d8bc2b9de, 0x1, 0x0)
    /usr/local/go/src/net/http/client.go:250 +0x43a
net/http.(*Client).send(0xc00b5474a0, 0xc00b4a4300, 0xbf56b58d8bc2b9de, 0xac8fa09661, 0x19453c0, 0xc00a0636b0, 0x0, 0x1, 0x20300200000000)
    /usr/local/go/src/net/http/client.go:174 +0xfa
net/http.(*Client).do(0xc00b5474a0, 0xc00b4a4300, 0x0, 0x0, 0x0)
    /usr/local/go/src/net/http/client.go:641 +0x3ce
net/http.(*Client).Do(...)
    /usr/local/go/src/net/http/client.go:509
github.com/loadimpact/k6/lib/netext/httpext.MakeRequest(0x10aa300, 0xc00b5471a0, 0xc00b3d5f80, 0xe86fd0, 0x4, 0xc00b3d5f00)
    /go/src/github.com/loadimpact/k6/lib/netext/httpext/request.go:288 +0x816
github.com/loadimpact/k6/js/modules/k6/http.(*HTTP).Request(0xc0007c6000, 0x10aa300, 0xc00b5471a0, 0xe86fd0, 0x4, 0x10b70c0, 0xc00b50d570, 0xc00b50d5a0, 0x1, 0x1, ...)
    /go/src/github.com/loadimpact/k6/js/modules/k6/http/request.go:111 +0x17d
github.com/loadimpact/k6/js/modules/k6/http.(*HTTP).Post(0xc0007c6000, 0x10aa300, 0xc00b5471a0, 0x10b70c0, 0xc00b50d570, 0xc00b50d5a0, 0x1, 0x1, 0x0, 0x0, ...)
    /go/src/github.com/loadimpact/k6/js/modules/k6/http/request.go:65 +0x9f
reflect.Value.call(0xe221c0, 0xc0007c6000, 0x2213, 0xe8c2e5, 0x9, 0xc00b4865f0, 0x3, 0x3, 0xb, 0xdf1340, ...)
    /usr/local/go/src/reflect/value.go:460 +0x5f6
reflect.Value.CallSlice(0xe221c0, 0xc0007c6000, 0x2213, 0xc00b4865f0, 0x3, 0x3, 0x194, 0xc005ac5750, 0x8c2a0e)
    /usr/local/go/src/reflect/value.go:334 +0xb4
github.com/loadimpact/k6/js/common.Bind.func1(0x10b6ee0, 0xc001f2c640, 0xc001dbac60, 0x2, 0x38, 0xa1728f10bcf41018, 0xc00b5758e8)
    /go/src/github.com/loadimpact/k6/js/common/bridge.go:239 +0x780
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm)._nativeCall(0xc0059dca90, 0xc00b44ed10, 0x2)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:1826 +0x291
github.com/loadimpact/k6/vendor/github.com/dop251/goja.call.exec(0x2, 0xc0059dca90)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:1810 +0x4a2
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm).run(0xc0059dca90)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:288 +0x51
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*funcObject).Call(0xc004b36e40, 0x10b7520, 0x19643a0, 0xc00b50d500, 0x1, 0x1, 0x0, 0x0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/func.go:130 +0x2cc
github.com/loadimpact/k6/vendor/github.com/dop251/goja.AssertFunction.func1.2()
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/runtime.go:1412 +0x96
github.com/loadimpact/k6/vendor/github.com/dop251/goja.(*vm).try(0xc0059dca90, 0xc007bdcca8, 0x0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/vm.go:370 +0x147
github.com/loadimpact/k6/vendor/github.com/dop251/goja.AssertFunction.func1(0x10b7520, 0x19643a0, 0xc00b50d500, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0)
    /go/src/github.com/loadimpact/k6/vendor/github.com/dop251/goja/runtime.go:1411 +0x13a
github.com/loadimpact/k6/js.(*VU).runFn(0xc0021e95f0, 0x10aa240, 0xc0070ff940, 0xc0002fdce0, 0xc001f2cf00, 0xc00b50d500, 0x1, 0x1, 0xc007bdce80, 0x0, ...)
    /go/src/github.com/loadimpact/k6/js/runner.go:444 +0x392
github.com/loadimpact/k6/js.(*VU).RunOnce(0xc0021e95f0, 0x10aa240, 0xc0070ff940, 0x0, 0x0)
    /go/src/github.com/loadimpact/k6/js/runner.go:404 +0x202
github.com/loadimpact/k6/core/local.(*vuHandle).run(0xc001e64800, 0xc0000f0000, 0xc005e96600, 0xc0023e6300)
    /go/src/github.com/loadimpact/k6/core/local/local.go:71 +0x152
github.com/loadimpact/k6/core/local.(*Executor).scale.func1(0xc001e64800, 0xc000444c60, 0xc005e96600, 0xc0023e6300)
    /go/src/github.com/loadimpact/k6/core/local/local.go:361 +0x4d
created by github.com/loadimpact/k6/core/local.(*Executor).scale
    /go/src/github.com/loadimpact/k6/core/local/local.go:360 +0x328

sniku@homedesktop:~/Temp/k6$ echo $?
2

sniku@homedesktop:~/Temp/k6$ docker-compose run k6 version
k6 v0.26.0-dev

sniku@homedesktop:~/Temp/k6$ uname -a
Linux homedesktop 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64 GNU/Linux

Edit: I posted a wrong version of k6 in the original trace. I posted k6 version instead of docker-compose run k6 version that I actually executed. Now it's fixed.

@na-- so it's not a regression of 1.13, if @sniku use the standard distribution of OS.

Can you confirm @sniku ?

@cuonglm I'm sorry, I mislead you (and @na-- as well). I edited the message above. The k6 version I was using is v0.26.0-dev I used a docker-compose for that run.

This is go1.13 regression, see https://github.com/golang/go/issues/34282

@ub-ssuch, have you by chance compiled your own version of k6 v0.25.1? I'm asking, since the official k6 v0.25.1 binary and docker container were compiled with Go 1.12, while your stack trace matches the Go 1.13 source much more closely:

Yes it was actually using master and not latest docker tags. Locally I was running from 0.25.1

Was this page helpful?
0 / 5 - 0 ratings