Source: grafana Version: 2.6.0+dfsg-3 Severity: important I’m trying to run grafana 2.6.0+dfsg-3 on a Raspberry Pi 3. A chromium-browser instance is configured to refresh a dashboard every 5s.
Unfortunately, grafana crashes every couple of minutes; see below for the crash message. AFAICT, the concurrent map write happens because two goroutines call api.getDatasource. Interestingly enough, the map to which is being written was intended as a cache (but never actually used!) and removed upstream in commit https://github.com/grafana/grafana/commit/75454b02c0f55aabb4d3a84209bea1521b5bc5fa Hence, I think backporting the aforementioned commit should fix the issue. Crash message: […] 2016/10/22 10:06:24 [I] Listen: http://0.0.0.0:3000 fatal error: concurrent map writes goroutine 39 [running]: runtime.throw(0x8efae8, 0x15) /usr/lib/go/src/runtime/panic.go:530 +0x78 fp=0x11360ca0 sp=0x11360c94 runtime.mapassign1(0x6e3630, 0x11119b00, 0x11360d08, 0x11360d10) /usr/lib/go/src/runtime/hashmap.go:445 +0x94 fp=0x11360cf4 sp=0x11360ca0 github.com/grafana/grafana/pkg/api.getDatasource(0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/grafana/grafana/pkg/api/dataproxy.go:80 +0x118 fp=0x11360dc0 sp=0x11360cf4 github.com/grafana/grafana/pkg/api.ProxyDataSourceRequest(0x111442e0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/grafana/grafana/pkg/api/dataproxy.go:85 +0x5c fp=0x11360e40 sp=0x11360dc0 runtime.call16(0x110691d0, 0x9f7790, 0x113e7668, 0x4, 0x4) /usr/lib/go/src/runtime/asm_arm.s:429 +0x68 fp=0x11360e54 sp=0x11360e40 reflect.Value.call(0x6ea788, 0x9f7790, 0x13, 0x870fe8, 0x4, 0x11196d90, 0x1, 0x1, 0x0, 0x0, ...) /usr/lib/go/src/reflect/value.go:435 +0xeb4 fp=0x11360ffc sp=0x11360e54 reflect.Value.Call(0x6ea788, 0x9f7790, 0x13, 0x11196d90, 0x1, 0x1, 0x0, 0x0, 0x0) /usr/lib/go/src/reflect/value.go:303 +0x84 fp=0x1136102c sp=0x11360ffc github.com/go-macaron/inject.(*injector).Invoke(0x111962b0, 0x6ea788, 0x9f7790, 0x0, 0x0, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-macaron/inject/inject.go:117 +0x34c fp=0x113610e0 sp=0x1136102c gopkg.in/macaron%2ev1.(*Context).run(0x112117c0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:113 +0x88 fp=0x11361168 sp=0x113610e0 gopkg.in/macaron%2ev1.(*Context).Next(0x112117c0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:104 +0x2c fp=0x11361170 sp=0x11361168 github.com/grafana/grafana/pkg/middleware.Sessioner.func1(0x111442e0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/grafana/grafana/pkg/middleware/session.go:70 +0x28 fp=0x113611b4 sp=0x11361170 runtime.call16(0x110691d0, 0x11024070, 0x113e6700, 0x4, 0x4) /usr/lib/go/src/runtime/asm_arm.s:429 +0x68 fp=0x113611c8 sp=0x113611b4 reflect.Value.call(0x6ea788, 0x11024070, 0x13, 0x870fe8, 0x4, 0x11196d60, 0x1, 0x1, 0x0, 0x0, ...) /usr/lib/go/src/reflect/value.go:435 +0xeb4 fp=0x11361370 sp=0x113611c8 reflect.Value.Call(0x6ea788, 0x11024070, 0x13, 0x11196d60, 0x1, 0x1, 0x0, 0x0, 0x0) /usr/lib/go/src/reflect/value.go:303 +0x84 fp=0x113613a0 sp=0x11361370 github.com/go-macaron/inject.(*injector).Invoke(0x111962b0, 0x6ea788, 0x11024070, 0x0, 0x0, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-macaron/inject/inject.go:117 +0x34c fp=0x11361454 sp=0x113613a0 gopkg.in/macaron%2ev1.(*Context).run(0x112117c0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:113 +0x88 fp=0x113614dc sp=0x11361454 gopkg.in/macaron%2ev1.(*Context).Next(0x112117c0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:104 +0x2c fp=0x113614e4 sp=0x113614dc gopkg.in/macaron%2ev1.Recovery.func1(0x112117c0, 0x113e9e00) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/recovery.go:161 +0x54 fp=0x113614f8 sp=0x113614e4 runtime.call16(0x11068960, 0x9f7aa4, 0x11296a08, 0x8, 0x8) /usr/lib/go/src/runtime/asm_arm.s:429 +0x68 fp=0x1136150c sp=0x113614f8 reflect.Value.call(0x70d420, 0x9f7aa4, 0x13, 0x870fe8, 0x4, 0x11144200, 0x2, 0x2, 0x0, 0x0, ...) /usr/lib/go/src/reflect/value.go:435 +0xeb4 fp=0x113616b4 sp=0x1136150c reflect.Value.Call(0x70d420, 0x9f7aa4, 0x13, 0x11144200, 0x2, 0x2, 0x0, 0x0, 0x0) /usr/lib/go/src/reflect/value.go:303 +0x84 fp=0x113616e4 sp=0x113616b4 github.com/go-macaron/inject.(*injector).Invoke(0x111962b0, 0x70d420, 0x9f7aa4, 0x0, 0x0, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-macaron/inject/inject.go:117 +0x34c fp=0x11361798 sp=0x113616e4 gopkg.in/macaron%2ev1.(*Context).run(0x112117c0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:113 +0x88 fp=0x11361820 sp=0x11361798 gopkg.in/macaron%2ev1.(*Context).Next(0x112117c0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:104 +0x2c fp=0x11361828 sp=0x11361820 github.com/grafana/grafana/pkg/middleware.Logger.func1(0x73910120, 0x111441c0, 0x110c8e00, 0x112117c0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/grafana/grafana/pkg/middleware/logger.go:33 +0x94 fp=0x11361940 sp=0x11361828 runtime.call16(0x11068930, 0x9f7850, 0x112bd560, 0x10, 0x10) /usr/lib/go/src/runtime/asm_arm.s:429 +0x68 fp=0x11361954 sp=0x11361940 reflect.Value.call(0x76b358, 0x9f7850, 0x13, 0x870fe8, 0x4, 0x113b2120, 0x3, 0x3, 0x0, 0x0, ...) /usr/lib/go/src/reflect/value.go:435 +0xeb4 fp=0x11361afc sp=0x11361954 reflect.Value.Call(0x76b358, 0x9f7850, 0x13, 0x113b2120, 0x3, 0x3, 0x0, 0x0, 0x0) /usr/lib/go/src/reflect/value.go:303 +0x84 fp=0x11361b2c sp=0x11361afc github.com/go-macaron/inject.(*injector).Invoke(0x111962b0, 0x76b358, 0x9f7850, 0x0, 0x0, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-macaron/inject/inject.go:117 +0x34c fp=0x11361be0 sp=0x11361b2c gopkg.in/macaron%2ev1.(*Context).run(0x112117c0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:113 +0x88 fp=0x11361c68 sp=0x11361be0 gopkg.in/macaron%2ev1.(*Router).Handle.func1(0x73910038, 0x110ab980, 0x110c8e00, 0x11144140) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/router.go:184 +0x3d4 fp=0x11361cbc sp=0x11361c68 gopkg.in/macaron%2ev1.(*Router).ServeHTTP(0x113e9dd0, 0x73910038, 0x110ab980, 0x110c8e00) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/router.go:286 +0x15c fp=0x11361d00 sp=0x11361cbc gopkg.in/macaron%2ev1.(*Macaron).ServeHTTP(0x113831c0, 0x73910038, 0x110ab980, 0x110c8e00) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/macaron.go:176 +0x238 fp=0x11361d60 sp=0x11361d00 net/http.serverHandler.ServeHTTP(0x111fa000, 0x73910038, 0x110ab980, 0x110c8e00) /usr/lib/go/src/net/http/server.go:2081 +0x190 fp=0x11361d90 sp=0x11361d60 net/http.(*conn).serve(0x111fe4c0) /usr/lib/go/src/net/http/server.go:1472 +0xee4 fp=0x11361fbc sp=0x11361d90 runtime.goexit() /usr/lib/go/src/runtime/asm_arm.s:990 +0x4 fp=0x11361fbc sp=0x11361fbc created by net/http.(*Server).Serve /usr/lib/go/src/net/http/server.go:2137 +0x3bc […] goroutine 38 [runnable]: reflect.Value.NumMethod(0x6e1308, 0x11152698, 0x194, 0x0) /usr/lib/go/src/reflect/value.go:1121 reflect.valueInterface(0x6e1308, 0x11152698, 0x194, 0x9f5301, 0x0, 0x0) /usr/lib/go/src/reflect/value.go:929 +0x140 reflect.Value.Interface(0x6e1308, 0x11152698, 0x194, 0x0, 0x0) /usr/lib/go/src/reflect/value.go:908 +0x44 github.com/go-xorm/xorm.reflect2value(0x11364714, 0x0, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-xorm/xorm/helpers.go:124 +0x100 github.com/go-xorm/xorm.value2Bytes(0x11364714, 0x0, 0x0, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-xorm/xorm/helpers.go:168 +0x4c github.com/go-xorm/xorm.(*Session)._row2Bean(0x110897c0, 0x11156a80, 0x113dbc20, 0x12, 0x12, 0x12, 0x6ca3f0, 0x110877d0, 0x11364944, 0x1117c380, ...) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-xorm/xorm/session.go:1999 +0xd14 github.com/go-xorm/xorm.(*Session).row2Bean(0x110897c0, 0x11156a80, 0x113dbc20, 0x12, 0x12, 0x12, 0x6ca3f0, 0x110877d0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-xorm/xorm/session.go:1629 +0x1a4 github.com/go-xorm/xorm.(*Session).Get(0x110897c0, 0x6ca3f0, 0x110877d0, 0x11156600, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-xorm/xorm/session.go:1061 +0x48c github.com/grafana/grafana/pkg/services/sqlstore.GetDataSourceById(0x110877c0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/grafana/grafana/pkg/services/sqlstore/datasource.go:23 +0x1c4 reflect.Value.call(0x707ee8, 0x9f78e8, 0x13, 0x870fe8, 0x4, 0x11364cb8, 0x1, 0x1, 0x0, 0x0, ...) /usr/lib/go/src/reflect/value.go:435 +0xeb4 reflect.Value.Call(0x707ee8, 0x9f78e8, 0x13, 0x11364cb8, 0x1, 0x1, 0x0, 0x0, 0x0) /usr/lib/go/src/reflect/value.go:303 +0x84 github.com/grafana/grafana/pkg/bus.(*InProcBus).Dispatch(0x11118ba0, 0x6ca648, 0x110877c0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/grafana/grafana/pkg/bus/bus.go:48 +0x2f4 github.com/grafana/grafana/pkg/bus.Dispatch(0x6ca648, 0x110877c0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/grafana/grafana/pkg/bus/bus.go:118 +0x48 github.com/grafana/grafana/pkg/api.getDatasource(0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/grafana/grafana/pkg/api/dataproxy.go:76 +0x9c github.com/grafana/grafana/pkg/api.ProxyDataSourceRequest(0x11223c60) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/grafana/grafana/pkg/api/dataproxy.go:85 +0x5c reflect.Value.call(0x6ea788, 0x9f7790, 0x13, 0x870fe8, 0x4, 0x11156670, 0x1, 0x1, 0x0, 0x0, ...) /usr/lib/go/src/reflect/value.go:435 +0xeb4 reflect.Value.Call(0x6ea788, 0x9f7790, 0x13, 0x11156670, 0x1, 0x1, 0x0, 0x0, 0x0) /usr/lib/go/src/reflect/value.go:303 +0x84 github.com/go-macaron/inject.(*injector).Invoke(0x11195c20, 0x6ea788, 0x9f7790, 0x0, 0x0, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-macaron/inject/inject.go:117 +0x34c gopkg.in/macaron%2ev1.(*Context).run(0x111fbb80) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:113 +0x88 gopkg.in/macaron%2ev1.(*Context).Next(0x111fbb80) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:104 +0x2c github.com/grafana/grafana/pkg/middleware.Sessioner.func1(0x11223c60) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/grafana/grafana/pkg/middleware/session.go:70 +0x28 reflect.Value.call(0x6ea788, 0x11024070, 0x13, 0x870fe8, 0x4, 0x11156640, 0x1, 0x1, 0x0, 0x0, ...) /usr/lib/go/src/reflect/value.go:435 +0xeb4 reflect.Value.Call(0x6ea788, 0x11024070, 0x13, 0x11156640, 0x1, 0x1, 0x0, 0x0, 0x0) /usr/lib/go/src/reflect/value.go:303 +0x84 github.com/go-macaron/inject.(*injector).Invoke(0x11195c20, 0x6ea788, 0x11024070, 0x0, 0x0, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-macaron/inject/inject.go:117 +0x34c gopkg.in/macaron%2ev1.(*Context).run(0x111fbb80) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:113 +0x88 gopkg.in/macaron%2ev1.(*Context).Next(0x111fbb80) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:104 +0x2c gopkg.in/macaron%2ev1.Recovery.func1(0x111fbb80, 0x113e9e00) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/recovery.go:161 +0x54 reflect.Value.call(0x70d420, 0x9f7aa4, 0x13, 0x870fe8, 0x4, 0x11223b80, 0x2, 0x2, 0x0, 0x0, ...) /usr/lib/go/src/reflect/value.go:435 +0xeb4 reflect.Value.Call(0x70d420, 0x9f7aa4, 0x13, 0x11223b80, 0x2, 0x2, 0x0, 0x0, 0x0) /usr/lib/go/src/reflect/value.go:303 +0x84 github.com/go-macaron/inject.(*injector).Invoke(0x11195c20, 0x70d420, 0x9f7aa4, 0x0, 0x0, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-macaron/inject/inject.go:117 +0x34c gopkg.in/macaron%2ev1.(*Context).run(0x111fbb80) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:113 +0x88 gopkg.in/macaron%2ev1.(*Context).Next(0x111fbb80) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:104 +0x2c github.com/grafana/grafana/pkg/middleware.Logger.func1(0x73910120, 0x11223b40, 0x1142ee00, 0x111fbb80) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/grafana/grafana/pkg/middleware/logger.go:33 +0x94 reflect.Value.call(0x76b358, 0x9f7850, 0x13, 0x870fe8, 0x4, 0x113e86c0, 0x3, 0x3, 0x0, 0x0, ...) /usr/lib/go/src/reflect/value.go:435 +0xeb4 reflect.Value.Call(0x76b358, 0x9f7850, 0x13, 0x113e86c0, 0x3, 0x3, 0x0, 0x0, 0x0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/github.com/go-macaron/inject/inject.go:117 +0x34c gopkg.in/macaron%2ev1.(*Context).run(0x111fbb80) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/context.go:113 +0x88 gopkg.in/macaron%2ev1.(*Router).Handle.func1(0x73910038, 0x11324c00, 0x1142ee00, 0x11223ac0) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/router.go:184 +0x3d4 gopkg.in/macaron%2ev1.(*Router).ServeHTTP(0x113e9dd0, 0x73910038, 0x11324c00, 0x1142ee00) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/router.go:286 +0x15c gopkg.in/macaron%2ev1.(*Macaron).ServeHTTP(0x113831c0, 0x73910038, 0x11324c00, 0x1142ee00) /build/grafana-BJkBTr/grafana-2.6.0+dfsg/_build/src/gopkg.in/macaron.v1/macaron.go:176 +0x238 net/http.serverHandler.ServeHTTP(0x111fa000, 0x73910038, 0x11324c00, 0x1142ee00) /usr/lib/go/src/net/http/server.go:2081 +0x190 net/http.(*conn).serve(0x111fe000) /usr/lib/go/src/net/http/server.go:1472 +0xee4 created by net/http.(*Server).Serve /usr/lib/go/src/net/http/server.go:2137 +0x3bc -- System Information: Debian Release: stretch/sid APT prefers testing APT policy: (990, 'testing'), (500, 'unstable') Architecture: amd64 (x86_64) Foreign Architectures: i386, armel, mipsel Kernel: Linux 4.6.0-1-amd64 (SMP w/8 CPU cores) Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system)

