Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

runtime: wasm runtime crashes under certain/undefined conditions #38574

Closed
mihaiav opened this issue Apr 21, 2020 · 5 comments
Closed

runtime: wasm runtime crashes under certain/undefined conditions #38574

mihaiav opened this issue Apr 21, 2020 · 5 comments
Labels
arch-wasm WebAssembly issues FrozenDueToAge NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Milestone

Comments

@mihaiav
Copy link

mihaiav commented Apr 21, 2020

What version of Go are you using (go version)?

$ go version

go version devel +04040ec9f9 Sun Apr 19 21:15:08 2020 +0000 darwin/amd64

Does this issue reproduce with the latest release?

yes

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/thetv/Library/Caches/go-build"
GOENV="/Users/thetv/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/thetv/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/thetv/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/Users/thetv/goroot"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/thetv/goroot/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/0y/s4s9kvpn75z7q_m38xtkztl80000gn/T/go-build996626748=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

I've used github.com/golang/glog for logging throughout a large Single Page Application (go compiled to wasm along with a wrapper for javascript's custom element's API).

What did you expect to see?

Logs being printed in the dev console

What did you see instead?

Once the app became more complex (got many custom elements, more concurrent logging) I started to experience a lot of runtime crashes. The latest/worst behaviour was that the application got into a kind a of deadlock and CPU was being exhausted. I couldn't even profile the CPU because the dev tools were being blocked as well due the CPU drain.

I can't reproduce the CPU drain in a simple test case but the code below (compiled to wasm GOOS=js GOARCH=wasm go build -o app.wasm) always throws fatal error: unreachable.

package main

import (
	"flag"
	"time"

	"github.com/golang/glog"
)

func init() {
	flag.Set("logtostderr", "true")
	flag.Set("-logtostderr", "true")
	flag.Parse()
}

func main() {
	Start()
	select {}
}
func Start() {
	for i := 0; i <= 100; i++ {
		go func() {
			for {
				glog.Errorf("connected")
				time.Sleep(1 * time.Second)
			}
		}()
		go func() {
			for {
				glog.Errorf("connected")
				time.Sleep(300 * time.Millisecond)
			}
		}()
		time.Sleep(50 * time.Millisecond)
	}
	for i := 0; i <= 100; i++ {
		go func() {
			for {
				glog.Flush()
				time.Sleep(300 * time.Millisecond)
			}
		}()
	}
	/*
		doc := js.Global().Get("document")
		defaultButtons := document.Call("querySelector", ".defaultButtons")
		doc.Call("addEventListener", "focus", onfocus, true)
	*/
}

fatal error: unreachable
wasm_exec.js:50
wasm_exec.js:50 goroutine 9 [running]:
wasm_exec.js:50 runtime.throw(0x3f415, 0xb)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/panic.go:1116 +0x7 fp=0x422ff0 sp=0x422fc8 pc=0x11cf0007
wasm_exec.js:50 runtime.chanrecv(0x0, 0x423128, 0x1, 0x0)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/chan.go:462 +0x8b fp=0x423078 sp=0x422ff0 pc=0x1060008b
wasm_exec.js:50 runtime.chanrecv1(0x0, 0x423128)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/chan.go:434 +0x2 fp=0x4230a0 sp=0x423078 pc=0x105e0002
wasm_exec.js:50 runtime: unexpected return pc for syscall.fsCall called from 0x0
wasm_exec.js:50 stack: frame={sp:0x4230a0, fp:0x423170} stack=[0x422800,0x423000)
wasm_exec.js:50 0000000000422fa0: 00000000133d0000 <runtime.fatalthrow.func1+0> 0000000000400d80
wasm_exec.js:50 0000000000422fb0: 0000000011cf0007 <runtime.throw+7> 0000000000422fc8
wasm_exec.js:50 0000000000422fc0: 0000000011cf0007 <runtime.throw+7> 0000000000422fd0
wasm_exec.js:50 0000000000422fd0: 00000000133c0000 <runtime.throw.func1+0> 000000000003f415
wasm_exec.js:50 0000000000422fe0: 000000000000000b 000000001060008b <runtime.chanrecv+139>
wasm_exec.js:50 0000000000422ff0: 000000000003f415 000000000000000b
wasm_exec.js:50 syscall.fsCall(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
wasm_exec.js:50 /Users/thetv/goroot/src/syscall/fs_js.go:521 +0xd fp=0x423170 sp=0x4230a0 pc=0x16c1000d
wasm_exec.js:50 created by runtime.beforeIdle
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/lock_js.go:192 +0x12
wasm_exec.js:50
wasm_exec.js:50 goroutine 1 [sleep]:
wasm_exec.js:50 time.Sleep(0x2faf080)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:34 +0x5
wasm_exec.js:50 main.main()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:17 +0x1
wasm_exec.js:50
wasm_exec.js:50 goroutine 6 [chan receive]:
wasm_exec.js:50 github.com/golang/glog.(*loggingT).flushDaemon(0x18d620)
wasm_exec.js:50 /Users/thetv/go/src/github.com/golang/glog/glog.go:882 +0x8
wasm_exec.js:50 created by github.com/golang/glog.init.0
wasm_exec.js:50 /Users/thetv/go/src/github.com/golang/glog/glog.go:410 +0x1a
wasm_exec.js:50
wasm_exec.js:50 goroutine 7 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 8 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 10 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 11 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 12 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 13 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 14 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 15 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 16 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 17 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 18 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 19 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 20 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 21 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 22 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 23 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 24 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 25 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 26 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 27 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 28 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 29 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 30 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 31 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 32 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 33 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 34 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 35 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 36 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 37 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 38 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 39 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 40 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 41 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 42 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 43 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 44 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 45 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 46 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 47 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 48 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 49 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 50 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 51 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 52 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 53 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 54 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 55 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 56 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 57 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 58 [sleep]:
wasm_exec.js:50 time.Sleep(0x3b9aca00)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:25 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 59 [sleep]:
wasm_exec.js:50 time.Sleep(0x11e1a300)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/time.go:188 +0xe
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:31 +0x7
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4
wasm_exec.js:50
wasm_exec.js:50 goroutine 60 [semacquire]:
wasm_exec.js:50 sync.runtime_SemacquireMutex(0x18d63c, 0x900000000, 0x1)
wasm_exec.js:50 /Users/thetv/goroot/src/runtime/sema.go:71 +0x2
wasm_exec.js:50 sync.(*Mutex).lockSlow(0x18d638)
wasm_exec.js:50 /Users/thetv/goroot/src/sync/mutex.go:138 +0x23
wasm_exec.js:50 sync.(*Mutex).Lock(0x18d638)
wasm_exec.js:50 /Users/thetv/goroot/src/sync/mutex.go:81 +0x7
wasm_exec.js:50 github.com/golang/glog.(*loggingT).output(0x18d620, 0x2, 0x44e070, 0x16b99d, 0x7, 0x18, 0x0)
wasm_exec.js:50 /Users/thetv/go/src/github.com/golang/glog/glog.go:672 +0x4
wasm_exec.js:50 github.com/golang/glog.(*loggingT).printf(0x18d620, 0x2, 0x3edbf, 0x9, 0x0, 0x0, 0x0)
wasm_exec.js:50 /Users/thetv/go/src/github.com/golang/glog/glog.go:655 +0xe
wasm_exec.js:50 github.com/golang/glog.Errorf(...)
wasm_exec.js:50 /Users/thetv/go/src/github.com/golang/glog/glog.go:1121
wasm_exec.js:50 main.Start.func1()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:24 +0x5
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:22 +0x3
wasm_exec.js:50
wasm_exec.js:50 goroutine 61 [waiting]:
wasm_exec.js:50 syscall/js.Value.Call(0x7ff800010000000a, 0x41a020, 0x3e356, 0x5, 0x49c320, 0x6, 0xa, 0xa, 0x1bb290)
wasm_exec.js:50 /Users/thetv/goroot/src/syscall/js/js.go:390 +0x3
wasm_exec.js:50 syscall.fsCall(0x3e356, 0x5, 0x495d50, 0x5, 0x5, 0x0, 0x0, 0x0, 0x0)
wasm_exec.js:50 /Users/thetv/goroot/src/syscall/fs_js.go:520 +0xc
wasm_exec.js:50 syscall.Write(0x2, 0x4520c0, 0x34, 0x40, 0x0, 0x18d520, 0x16e3001a)
wasm_exec.js:50 /Users/thetv/goroot/src/syscall/fs_js.go:422 +0xd
wasm_exec.js:50 internal/poll.(*FD).Write(0x428120, 0x4520c0, 0x34, 0x40, 0x0, 0x0, 0x0)
wasm_exec.js:50 /Users/thetv/goroot/src/internal/poll/fd_unix.go:259 +0x22
wasm_exec.js:50 os.(*File).write(...)
wasm_exec.js:50 /Users/thetv/goroot/src/os/file_posix.go:48
wasm_exec.js:50 os.(*File).Write(0x40c028, 0x4520c0, 0x34, 0x40, 0x17ee80, 0x36a40, 0x42e8f0)
wasm_exec.js:50 /Users/thetv/goroot/src/os/file.go:153 +0xf
wasm_exec.js:50 github.com/golang/glog.(*loggingT).output(0x18d620, 0x2, 0x44e0e0, 0x16b99d, 0x7, 0x1e, 0x0)
wasm_exec.js:50 /Users/thetv/go/src/github.com/golang/glog/glog.go:683 +0x66
wasm_exec.js:50 github.com/golang/glog.(*loggingT).printf(0x18d620, 0x2, 0x3edbf, 0x9, 0x0, 0x0, 0x0)
wasm_exec.js:50 /Users/thetv/go/src/github.com/golang/glog/glog.go:655 +0xe
wasm_exec.js:50 github.com/golang/glog.Errorf(...)
wasm_exec.js:50 /Users/thetv/go/src/github.com/golang/glog/glog.go:1121
wasm_exec.js:50 main.Start.func2()
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:30 +0x5
wasm_exec.js:50 created by main.Start
wasm_exec.js:50 /Users/thetv/go/src/nap.tv/c/poc/wa/xapp/main.go:28 +0x4

Below is also a stacktrace from Firefox when my app gets stuck and I kill the tab/script.

panic: (*js.ValueError) 0x5fbc040 localhost:8080:5435:14 fatal error: panic on system stack localhost:8080:5435:14

runtime stack: localhost:8080:5435:14
runtime: unexpected return pc for syscall/js.Value.Call called from 0x0 localhost:8080:5435:14
stack: frame={sp:0x36c92c0, fp:0x36c9380} stack=[0x36c7158,0x36c8d58) localhost:8080:5435:14
localhost:8080:5435:14
syscall/js.Value.Call(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/syscall/js/js.go:395 +0x37 localhost:8080:5435:14
localhost:8080:5435:14
goroutine 1 [select (no cases), 1 minutes]: localhost:8080:5435:14
thep.uk/server.Server(0x3006f00, 0x3b347e0, 0x2ffbe40, 0x402dd60) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/server/webserver_js.go:65 +0x3a localhost:8080:5435:14
thep.uk/handlers/context.Main(0x3006f00, 0x3b347e0, 0x2ffbe40, 0x402dd60, 0x43803c0, 0x1, 0x1) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/context_js.go:38 +0xc localhost:8080:5435:14
thep.uk/tools/ep/app.Main(0x3006f00, 0x3997a10, 0x2f57740, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/tools/ep/app/app.go:156 +0x36 localhost:8080:5435:14
main.main() localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/_web/destwasm/_web/main.go:30 +0x16 localhost:8080:5435:14
localhost:8080:5435:14
goroutine 6 [semacquire]: localhost:8080:5435:14
sync.runtime_SemacquireMutex(0x36ab47c, 0x1100000000, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/sema.go:71 +0x2 localhost:8080:5435:14
sync.(*Mutex).lockSlow(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:138 +0x23 localhost:8080:5435:14
sync.(*Mutex).Lock(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:81 +0x7 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).lockAndFlushAll(0x36ab460) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:889 +0x4 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).flushDaemon(0x36ab460) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:883 +0x6 localhost:8080:5435:14
created by github.com/golang/glog.init.0 localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:410 +0x1a localhost:8080:5435:14
localhost:8080:5435:14
goroutine 8 [waiting]: localhost:8080:5435:14
runtime.gopark(0x0, 0x0, 0x0, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/proc.go:306 +0x22 localhost:8080:5435:14
runtime.handleEvent() localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/lock_js.go:243 +0xf localhost:8080:5435:14
runtime.goexit() localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/asm_wasm.s:428 +0x1 localhost:8080:5435:14
localhost:8080:5435:14
goroutine 1004 [select]: localhost:8080:5435:14
nap.tv/c/ui/play.(*Element).observe.func1(0x3006e40, 0x4250340, 0x6c82300, 0x7ff800010000031f, 0x38fee88, 0x7ff8000100000897, 0x38ff328, 0x7ff80004000007fe, 0x38ff2f0, 0x90e, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/play/element.go:108 +0x6 localhost:8080:5435:14
created by nap.tv/c/ui/play.(*Element).observe localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/play/element.go:106 +0x24 localhost:8080:5435:14
localhost:8080:5435:14
goroutine 1059 [semacquire]: localhost:8080:5435:14
sync.runtime_SemacquireMutex(0x36ab47c, 0x1900000000, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/sema.go:71 +0x2 localhost:8080:5435:14
sync.(*Mutex).lockSlow(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:138 +0x23 localhost:8080:5435:14
sync.(*Mutex).Lock(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:81 +0x7 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).output(0x36ab460, 0x2, 0x3a5d2d0, 0x35d80cc, 0xc, 0x41, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:672 +0x4 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).printf(0x36ab460, 0x2, 0x397dc00, 0x12, 0x3a22000, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:655 +0xe localhost:8080:5435:14
github.com/golang/glog.Errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:1121 localhost:8080:5435:14
thep.uk/log/stderr.errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:65 localhost:8080:5435:14
thep.uk/log/stderr.std.Log(0x3006e40, 0x39d1c40, 0x1f4, 0x397dc00, 0x12, 0x3a22000, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:55 +0xf localhost:8080:5435:14
thep.uk/log.Errorf(0x3006e40, 0x39d1c40, 0x14c8fe, 0xe, 0x3a22000, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/log.go:44 +0x10 localhost:8080:5435:14
nap.tv/c/res.Get.func1(0x3006e40, 0x39d1c40) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:187 +0x14 localhost:8080:5435:14
nap.tv/c/res.Get(0x3006f00, 0x40d05d0, 0x41b6310, 0x67, 0x40232f0, 0x1, 0x1, 0x416b200, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:255 +0x15 localhost:8080:5435:14
nap.tv/c/res.fromResourceType(0x3006f00, 0x40d05d0, 0x41b6310, 0x67, 0x4058a25, 0xf, 0xf8ea0, 0x3bad180, 0x5ff0000, 0x28, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/common.go:72 +0x13 localhost:8080:5435:14
nap.tv/c/res.From(0x3006f00, 0x40d05d0, 0x41b6310, 0x67, 0x4058a25, 0xf, 0x0, 0x0, 0x1, 0x100000011, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/common.go:24 +0x4e localhost:8080:5435:14
nap.tv/c/handler.Poster(0x3006f00, 0x40d05d0, 0x41b6310, 0x67, 0x4058a25, 0xf, 0x0, 0x0, 0x4058a3c, 0x9, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/poster.go:32 +0x2 localhost:8080:5435:14
reflect.Value.call(0xc0900, 0x2f577a8, 0x13, 0x14336d, 0x4, 0x3b33440, 0x5, 0x8, 0x4169fc0, 0x39d1c00, ...) localhost:8080:5435:14
/Users/thetv/goroot/src/reflect/value.go:460 +0x72 localhost:8080:5435:14
reflect.Value.Call(0xc0900, 0x2f577a8, 0x13, 0x3b33440, 0x5, 0x8, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/reflect/value.go:321 +0xc localhost:8080:5435:14
thep.uk/hamux.(*link).handleFunc(0x387f7c0, 0x3006f00, 0x40d05d0, 0x2ffc9c0, 0x398de00, 0x2ffc9c0, 0x398de00, 0x0, 0x7b940) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/serve.go:139 +0x9 localhost:8080:5435:14
thep.uk/hamux.(*link).ServeHTTP(0x387f7c0, 0x30061c0, 0x4311300, 0x5f82700) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/serve.go:80 +0x62 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x4311300, 0x5f82600) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http/log.(*Link).ServeHTTP(0x39cd2e0, 0x30061c0, 0x4311300, 0x5f82500) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/log/log.go:38 +0x22 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x4311300, 0x5f82400) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/global.(*state).ServeHTTP(0x3690178, 0x30061c0, 0x4311300, 0x5f82400) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/global/global.go:70 +0x12 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x4311300, 0x5f82300) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/auth/cookie.cookieHandler.ServeHTTP(0x30061c0, 0x4311300, 0x5f82200) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/auth/cookie/cookie.go:53 +0x2c localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x4311300, 0x5f82100) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.enhancer.ServeHTTP(0x3bda660, 0x1, 0x1, 0x30061c0, 0x4311300, 0x3a1f900) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:127 +0x1d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x4311300, 0x3a1f700) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.Config.ServeHTTP(0x4261394, 0xa, 0x0, 0x0, 0x0, 0x4261376, 0xa, 0x43a028b, 0x3, 0x4249d00, ...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:108 +0x7d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x4311300, 0x3a1f200) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http.(*manager).ServeHTTP(0x39cd2a0, 0x30061c0, 0x4311300, 0x3a1ee00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:91 +0x20 localhost:8080:5435:14
github.com/gorilla/mux.(*Router).ServeHTTP(0x4048000, 0x30061c0, 0x4311300, 0x3a1e500) localhost:8080:5435:14
/Users/thetv/go/src/github.com/gorilla/mux/mux.go:162 +0xe localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x4311300, 0x3a2fe00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/global.(*state).ServeHTTP(0x3690178, 0x30061c0, 0x4311300, 0x3a2fe00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/global/global.go:70 +0x12 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x4311300, 0x3a2fc00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/auth/cookie.cookieHandler.ServeHTTP(0x30061c0, 0x4311300, 0x3a2fa00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/auth/cookie/cookie.go:53 +0x2c localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x4311300, 0x3a2f800) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.enhancer.ServeHTTP(0x3bda950, 0x1, 0x1, 0x30061c0, 0x4311300, 0x3a2f500) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:127 +0x1d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x4311300, 0x3a2f300) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.Config.ServeHTTP(0x4261394, 0xa, 0x0, 0x0, 0x0, 0x4261376, 0xa, 0x43a028b, 0x3, 0x4249d00, ...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:108 +0x7d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x4311300, 0x3a2ed00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http.(*manager).ServeHTTP(0x402dd60, 0x30061c0, 0x4311300, 0x3a2ea00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:91 +0x20 localhost:8080:5435:14
thep.uk/engine/urlfetch.fetchInternal(0x3a2e600, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/roundtrip_js.go:67 +0x40 localhost:8080:5435:14
thep.uk/engine/urlfetch.jsTr.RoundTrip(0x2ffb960, 0x369bd20, 0x3a2e600, 0x3a2e600, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/roundtrip_js.go:46 +0x35 localhost:8080:5435:14
thep.uk/engine/urlfetch.enhanceTrip.RoundTrip(0x4169580, 0x4, 0x4, 0x2ffcba0, 0x416adf0, 0x3a2e400, 0x160, 0x150, 0xf2c60) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/urlfetch.go:65 +0x18 localhost:8080:5435:14
net/http.send(0x3a2e400, 0x2ffcb80, 0x408d7a0, 0x0, 0x0, 0x0, 0x0, 0x380cba0, 0x408d7d0, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:252 +0x5c localhost:8080:5435:14
net/http.(*Client).send(0x408d770, 0x3a2e400, 0x0, 0x0, 0x0, 0x380cba0, 0x0, 0x1, 0x7b940) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:176 +0x13 localhost:8080:5435:14
net/http.(*Client).do(0x408d770, 0x3a2e400, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:718 +0x38 localhost:8080:5435:14
net/http.(*Client).Do(...) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:586 localhost:8080:5435:14
nap.tv/c/res.Fetch.func1(0x3006ec0, 0x42fb8c0) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:350 +0x1c localhost:8080:5435:14
nap.tv/c/res.Fetch(0x3006e40, 0x4169b00, 0x40589a0, 0xa5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:390 +0x9 localhost:8080:5435:14
nap.tv/c/ui/poster.getPoster(0x3006e40, 0x4169b00, 0x41b6150, 0x67, 0x4249af0, 0xf, 0x4249b80, 0x9, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/poster/poster.go:218 +0x18 localhost:8080:5435:14
nap.tv/c/ui/poster.(*Poster).read(0x3b52dc0, 0x3006e40, 0x4169b00, 0x7ff8000100000053, 0x4211800) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/poster/poster.go:156 +0x9 localhost:8080:5435:14
nap.tv/c/ui/poster.(*Poster).connectedCallback(0x3b52dc0, 0x3006e40, 0x4169b00, 0x7ff8000100000053, 0x4211800) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/poster/poster.go:99 +0xb localhost:8080:5435:14
nap.tv/c/ui/poster.(*Poster).ConnectedCallback.func1() localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/poster/poster.go:89 +0x2 localhost:8080:5435:14
created by nap.tv/c/util.observeIntersection.func1 localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/util/observer.go:176 +0xd localhost:8080:5435:14
localhost:8080:5435:14
goroutine 1032 [semacquire]: localhost:8080:5435:14
sync.runtime_SemacquireMutex(0x36ab47c, 0x2900000000, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/sema.go:71 +0x2 localhost:8080:5435:14
sync.(*Mutex).lockSlow(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:138 +0x23 localhost:8080:5435:14
sync.(*Mutex).Lock(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:81 +0x7 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).output(0x36ab460, 0x2, 0x3a5d3b0, 0x35d80cc, 0xc, 0x41, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:672 +0x4 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).printf(0x36ab460, 0x2, 0x145ced, 0x7, 0x40bdf40, 0x2, 0x2) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:655 +0xe localhost:8080:5435:14
github.com/golang/glog.Errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:1121 localhost:8080:5435:14
thep.uk/log/stderr.errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:65 localhost:8080:5435:14
thep.uk/log/stderr.std.Log(0x3006f00, 0x3b715f0, 0x1f4, 0x145ced, 0x7, 0x40bdf40, 0x2, 0x2) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:55 +0xf localhost:8080:5435:14
thep.uk/log.Error(0x3006f00, 0x3b715f0, 0xd0320, 0x36c3c20) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/log.go:48 +0xc localhost:8080:5435:14
nap.tv/c/handler/multisearch.Query(0x3006f00, 0x3b715f0, 0x41b2254, 0x0, 0x41b2257, 0x0, 0x41b225f, 0x0, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/multisearch/multisearch.go:86 +0x27 localhost:8080:5435:14
reflect.Value.call(0xb40c0, 0x2f577e8, 0x13, 0x14336d, 0x4, 0x43bf1a0, 0x4, 0x4, 0x4168100, 0x3b71890, ...) localhost:8080:5435:14
/Users/thetv/goroot/src/reflect/value.go:460 +0x72 localhost:8080:5435:14
reflect.Value.Call(0xb40c0, 0x2f577e8, 0x13, 0x43bf1a0, 0x4, 0x4, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/reflect/value.go:321 +0xc localhost:8080:5435:14
thep.uk/hamux.(*link).handleFunc(0x3af8280, 0x3006f00, 0x3b715f0, 0x2ffc9c0, 0x5fbeaa0, 0x2ffc9c0, 0x5fbeaa0, 0x0, 0x7b940) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/serve.go:139 +0x9 localhost:8080:5435:14
thep.uk/hamux.(*link).ServeHTTP(0x3af8280, 0x30061c0, 0x41ef720, 0x39e1300) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/serve.go:80 +0x62 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef720, 0x39e1100) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http/log.(*Link).ServeHTTP(0x4311040, 0x30061c0, 0x41ef720, 0x39e0f00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/log/log.go:38 +0x22 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef720, 0x39e0d00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/global.(*state).ServeHTTP(0x3690178, 0x30061c0, 0x41ef720, 0x39e0d00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/global/global.go:70 +0x12 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef720, 0x39e0900) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/auth/cookie.cookieHandler.ServeHTTP(0x30061c0, 0x41ef720, 0x39e0700) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/auth/cookie/cookie.go:53 +0x2c localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef720, 0x39e0300) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.enhancer.ServeHTTP(0x3bda7b0, 0x1, 0x1, 0x30061c0, 0x41ef720, 0x39e0100) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:127 +0x1d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef720, 0x39e7f00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.Config.ServeHTTP(0x4261394, 0xa, 0x0, 0x0, 0x0, 0x4261376, 0xa, 0x43a028b, 0x3, 0x42632c0, ...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:108 +0x7d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef720, 0x39e7900) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http.(*manager).ServeHTTP(0x4311000, 0x30061c0, 0x41ef720, 0x39e7600) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:91 +0x20 localhost:8080:5435:14
github.com/gorilla/mux.(*Router).ServeHTTP(0x4048000, 0x30061c0, 0x41ef720, 0x39e7200) localhost:8080:5435:14
/Users/thetv/go/src/github.com/gorilla/mux/mux.go:162 +0xe localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef720, 0x39e7000) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/global.(*state).ServeHTTP(0x3690178, 0x30061c0, 0x41ef720, 0x39e7000) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/global/global.go:70 +0x12 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef720, 0x39e6e00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/auth/cookie.cookieHandler.ServeHTTP(0x30061c0, 0x41ef720, 0x39e6900) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/auth/cookie/cookie.go:53 +0x2c localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef720, 0x39e6700) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.enhancer.ServeHTTP(0x3bda950, 0x1, 0x1, 0x30061c0, 0x41ef720, 0x39e6500) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:127 +0x1d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef720, 0x39e6300) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.Config.ServeHTTP(0x4261394, 0xa, 0x0, 0x0, 0x0, 0x4261376, 0xa, 0x43a028b, 0x3, 0x42632c0, ...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:108 +0x7d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef720, 0x3a03a00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http.(*manager).ServeHTTP(0x402dd60, 0x30061c0, 0x41ef720, 0x3a03800) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:91 +0x20 localhost:8080:5435:14
thep.uk/engine/urlfetch.fetchInternal(0x3a03500, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/roundtrip_js.go:67 +0x40 localhost:8080:5435:14
thep.uk/engine/urlfetch.jsTr.RoundTrip(0x2ffb960, 0x369bd20, 0x3a03500, 0x3a03500, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/roundtrip_js.go:46 +0x35 localhost:8080:5435:14
thep.uk/engine/urlfetch.enhanceTrip.RoundTrip(0x3b7ec00, 0x8, 0x8, 0x2ffcba0, 0x3b5a4b0, 0x3a03200, 0x160, 0x150, 0xf2c60) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/urlfetch.go:65 +0x18 localhost:8080:5435:14
net/http.send(0x3a03200, 0x2ffcb80, 0x3995aa0, 0x0, 0x0, 0x0, 0x0, 0x380ccd8, 0x3995ad0, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:252 +0x5c localhost:8080:5435:14
net/http.(*Client).send(0x3995a70, 0x3a03200, 0x0, 0x0, 0x0, 0x380ccd8, 0x0, 0x1, 0x7b940) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:176 +0x13 localhost:8080:5435:14
net/http.(*Client).do(0x3995a70, 0x3a03200, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:718 +0x38 localhost:8080:5435:14
net/http.(*Client).Do(...) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:586 localhost:8080:5435:14
nap.tv/c/res.httpGet(0x3006e40, 0x429f2c0, 0x41b2240, 0x27, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:300 +0x40 localhost:8080:5435:14
nap.tv/c/res.Get.func1(0x3006e40, 0x429f2c0) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:185 +0x4 localhost:8080:5435:14
nap.tv/c/res.Get(0x3006f00, 0x39956e0, 0x41b2240, 0x27, 0x4287560, 0x1, 0x1, 0x3b5a300, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:255 +0x15 localhost:8080:5435:14
nap.tv/c/res.fromResourceType(0x3006f00, 0x39956e0, 0x41b2240, 0x27, 0x151125, 0x14, 0x0, 0x5eec0, 0x36c4a00, 0x3995920, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/common.go:72 +0x13 localhost:8080:5435:14
nap.tv/c/res.From(0x3006f00, 0x39956e0, 0x41b2240, 0x27, 0x151125, 0x14, 0x0, 0x0, 0x16, 0xc4700, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/common.go:24 +0x4e localhost:8080:5435:14
nap.tv/c/handler.PostersList(0x3006f00, 0x39956e0, 0x41b2240, 0x27, 0x0, 0x0, 0x3873471, 0x9, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/poster.go:111 +0x2 localhost:8080:5435:14
reflect.Value.call(0xb8b80, 0x2f577a0, 0x13, 0x14336d, 0x4, 0x43bef00, 0x4, 0x4, 0x4251fc0, 0x3995920, ...) localhost:8080:5435:14
/Users/thetv/goroot/src/reflect/value.go:460 +0x72 localhost:8080:5435:14
reflect.Value.Call(0xb8b80, 0x2f577a0, 0x13, 0x43bef00, 0x4, 0x4, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/reflect/value.go:321 +0xc localhost:8080:5435:14
thep.uk/hamux.(*link).handleFunc(0x387fa40, 0x3006f00, 0x39956e0, 0x2ffc9c0, 0x5fbe910, 0x2ffc9c0, 0x5fbe910, 0x0, 0x7b940) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/serve.go:139 +0x9 localhost:8080:5435:14
thep.uk/hamux.(*link).ServeHTTP(0x387fa40, 0x30061c0, 0x41ef3c0, 0x3a02e00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/serve.go:80 +0x62 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef3c0, 0x3a02c00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http/log.(*Link).ServeHTTP(0x39cd520, 0x30061c0, 0x41ef3c0, 0x3a02a00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/log/log.go:38 +0x22 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef3c0, 0x3a02800) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/global.(*state).ServeHTTP(0x3690178, 0x30061c0, 0x41ef3c0, 0x3a02800) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/global/global.go:70 +0x12 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef3c0, 0x3a02500) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/auth/cookie.cookieHandler.ServeHTTP(0x30061c0, 0x41ef3c0, 0x3a02300) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/auth/cookie/cookie.go:53 +0x2c localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef3c0, 0x3a02100) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.enhancer.ServeHTTP(0x3bda680, 0x1, 0x1, 0x30061c0, 0x41ef3c0, 0x5f83f00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:127 +0x1d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef3c0, 0x5f83e00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.Config.ServeHTTP(0x4261394, 0xa, 0x0, 0x0, 0x0, 0x4261376, 0xa, 0x43a028b, 0x3, 0x4263110, ...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:108 +0x7d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef3c0, 0x5f83c00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http.(*manager).ServeHTTP(0x39cd4e0, 0x30061c0, 0x41ef3c0, 0x5f83b00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:91 +0x20 localhost:8080:5435:14
github.com/gorilla/mux.(*Router).ServeHTTP(0x4048000, 0x30061c0, 0x41ef3c0, 0x5f83900) localhost:8080:5435:14
/Users/thetv/go/src/github.com/gorilla/mux/mux.go:162 +0xe localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef3c0, 0x5f83700) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/global.(*state).ServeHTTP(0x3690178, 0x30061c0, 0x41ef3c0, 0x5f83700) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/global/global.go:70 +0x12 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef3c0, 0x5f83600) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/auth/cookie.cookieHandler.ServeHTTP(0x30061c0, 0x41ef3c0, 0x5f83500) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/auth/cookie/cookie.go:53 +0x2c localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef3c0, 0x5f83400) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.enhancer.ServeHTTP(0x3bda950, 0x1, 0x1, 0x30061c0, 0x41ef3c0, 0x5f83300) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:127 +0x1d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef3c0, 0x5f83200) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.Config.ServeHTTP(0x4261394, 0xa, 0x0, 0x0, 0x0, 0x4261376, 0xa, 0x43a028b, 0x3, 0x4263110, ...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:108 +0x7d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x41ef3c0, 0x5f83000) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http.(*manager).ServeHTTP(0x402dd60, 0x30061c0, 0x41ef3c0, 0x5f82f00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:91 +0x20 localhost:8080:5435:14
thep.uk/engine/urlfetch.fetchInternal(0x5f82e00, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/roundtrip_js.go:67 +0x40 localhost:8080:5435:14
thep.uk/engine/urlfetch.jsTr.RoundTrip(0x2ffb960, 0x369bd20, 0x5f82e00, 0x5f82e00, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/roundtrip_js.go:46 +0x35 localhost:8080:5435:14
thep.uk/engine/urlfetch.enhanceTrip.RoundTrip(0x4169580, 0x4, 0x4, 0x2ffcba0, 0x3b5a170, 0x5f82d00, 0x160, 0x150, 0xf2c60) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/urlfetch.go:65 +0x18 localhost:8080:5435:14
created by nap.tv/c/util.(*GC).AddEventListener.func1 localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/util/gc.go:73 +0x6 localhost:8080:5435:14
localhost:8080:5435:14
goroutine 1085 [semacquire]: localhost:8080:5435:14
sync.runtime_SemacquireMutex(0x36ab47c, 0x2100000000, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/sema.go:71 +0x2 localhost:8080:5435:14
sync.(*Mutex).lockSlow(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:138 +0x23 localhost:8080:5435:14
sync.(*Mutex).Lock(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:81 +0x7 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).output(0x36ab460, 0x2, 0x3a5d340, 0x35d80cc, 0xc, 0x41, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:672 +0x4 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).printf(0x36ab460, 0x2, 0x397dc60, 0x12, 0x3a22040, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:655 +0xe localhost:8080:5435:14
github.com/golang/glog.Errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:1121 localhost:8080:5435:14
thep.uk/log/stderr.errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:65 localhost:8080:5435:14
thep.uk/log/stderr.std.Log(0x3006e40, 0x429fd80, 0x1f4, 0x397dc60, 0x12, 0x3a22040, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:55 +0xf localhost:8080:5435:14
thep.uk/log.Errorf(0x3006e40, 0x429fd80, 0x14c8fe, 0xe, 0x3a22040, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/log.go:44 +0x10 localhost:8080:5435:14
nap.tv/c/res.Get.func1(0x3006e40, 0x429fd80) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:187 +0x14 localhost:8080:5435:14
nap.tv/c/res.Get(0x3006f00, 0x3b715f0, 0x41b3110, 0x2f, 0x38cdee8, 0x1, 0x1, 0x3b71200, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:255 +0x15 localhost:8080:5435:14
nap.tv/c/handler/multisearch.fromDefaultSearch(0x3006f00, 0x3b715f0, 0x41b3110, 0x2f, 0x3b714d0, 0x42633d8, 0x370a0005, 0x3b715f0, 0x4379178, 0x7ff80001000000bf, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/multisearch/multisearch.go:318 +0x3 localhost:8080:5435:14
nap.tv/c/handler/multisearch.fromCursors.func1(0x3ad8cc0, 0x3006f00, 0x3b715f0, 0x3a5d0a0, 0x2, 0x2, 0x41b3110, 0x2f, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/multisearch/multisearch.go:243 +0x2 localhost:8080:5435:14
created by nap.tv/c/handler/multisearch.fromCursors localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/multisearch/multisearch.go:241 +0x7a localhost:8080:5435:14
localhost:8080:5435:14
goroutine 1005 [waiting]: localhost:8080:5435:14
syscall/js.Value.Call(0x7ff800010000000a, 0x3828020, 0x144929, 0x5, 0x426f4a0, 0x6, 0xa, 0xa, 0x3fba598) localhost:8080:5435:14
/Users/thetv/goroot/src/syscall/js/js.go:390 +0x3 localhost:8080:5435:14
syscall.fsCall(0x144929, 0x5, 0x4021ae8, 0x5, 0x5, 0x0, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/syscall/fs_js.go:520 +0xc localhost:8080:5435:14
syscall.Write(0x2, 0x4108dc0, 0x127, 0x2a1, 0x0, 0x36ab1a0, 0x1609001a) localhost:8080:5435:14
/Users/thetv/goroot/src/syscall/fs_js.go:422 +0xd localhost:8080:5435:14
internal/poll.(*FD).Write(0x3836120, 0x4108dc0, 0x127, 0x2a1, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/internal/poll/fd_unix.go:259 +0x22 localhost:8080:5435:14
os.(*File).write(...) localhost:8080:5435:14
/Users/thetv/goroot/src/os/file_posix.go:48 localhost:8080:5435:14
os.(*File).Write(0x380c028, 0x4108dc0, 0x127, 0x2a1, 0x3696520, 0x12f080, 0x3aef2b0) localhost:8080:5435:14
/Users/thetv/goroot/src/os/file.go:153 +0xf localhost:8080:5435:14
github.com/golang/glog.(*loggingT).output(0x36ab460, 0x0, 0x3a5d1f0, 0x35d80cc, 0xc, 0x3c, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:683 +0x66 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).printf(0x36ab460, 0x0, 0x397d9c0, 0x1e, 0x40bdde0, 0x2, 0x2) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:655 +0xe localhost:8080:5435:14
github.com/golang/glog.Infof(...) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:1073 localhost:8080:5435:14
thep.uk/log/stderr.infof(...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:60 localhost:8080:5435:14
thep.uk/log/stderr.std.Log(0x3006e40, 0x4250880, 0xc8, 0x397d9c0, 0x1e, 0x40bdde0, 0x2, 0x2) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:51 +0x15 localhost:8080:5435:14
thep.uk/log.Infof(0x3006e40, 0x4250880, 0x155614, 0x1a, 0x40bdde0, 0x2, 0x2) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/log.go:75 +0x10 localhost:8080:5435:14
nap.tv/c/ui/video.(*Element).AttributeChangedCallback(0x389e3c0, 0x3006e40, 0x4250880, 0x7ff800010000031d, 0x38ff3c0, 0x7ff8000200000313, 0x41ea9b8, 0x7ff8000200000345, 0x41ea9c0, 0x7ff80002000002d3, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/video/element.go:176 +0x51 localhost:8080:5435:14
nap.tv/c/util.(*element).toJS.func2.1(0x3b1a050, 0x3006e40, 0x4250880, 0x7ff800010000031d, 0x38ff3c0) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/util/custom_element.go:200 +0x19 localhost:8080:5435:14
created by nap.tv/c/util.(*element).toJS.func2 localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/util/custom_element.go:188 +0x9 localhost:8080:5435:14
localhost:8080:5435:14
goroutine 1086 [semacquire]: localhost:8080:5435:14
sync.runtime_SemacquireMutex(0x36ab47c, 0x3100000000, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/sema.go:71 +0x2 localhost:8080:5435:14
sync.(*Mutex).lockSlow(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:138 +0x23 localhost:8080:5435:14
sync.(*Mutex).Lock(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:81 +0x7 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).output(0x36ab460, 0x2, 0x3a5d420, 0x35d80cc, 0xc, 0x41, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:672 +0x4 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).printf(0x36ab460, 0x2, 0x397dd00, 0x12, 0x3a22080, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:655 +0xe localhost:8080:5435:14
github.com/golang/glog.Errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:1121 localhost:8080:5435:14
thep.uk/log/stderr.errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:65 localhost:8080:5435:14
thep.uk/log/stderr.std.Log(0x3006f00, 0x398ef60, 0x1f4, 0x397dd00, 0x12, 0x3a22080, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:55 +0xf localhost:8080:5435:14
thep.uk/log.Errorf(0x3006f00, 0x398ef60, 0x14ce76, 0xe, 0x3a22080, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/log.go:44 +0x10 localhost:8080:5435:14
nap.tv/c/searchalt/youtube/request.HTMLRequest(0x3006f00, 0x398ef60, 0x1551b6, 0x1a, 0x400f180, 0x4076b00, 0x380, 0x3a060271) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/searchalt/youtube/request/general.go:85 +0x80 localhost:8080:5435:14
nap.tv/c/searchalt/youtube/request.(*Client).FromHTML(0x3690a40, 0x3006f00, 0x398ef60, 0x1551b6, 0x1a, 0x35f0901, 0x0, 0x0, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/searchalt/youtube/request/general.go:172 +0x2 localhost:8080:5435:14
nap.tv/c/searchalt/youtube/music.FromMusicResource(0x3006f00, 0x398ef60, 0x3b4ed4c, 0x0, 0x3b4ed59, 0x0, 0x0, 0x0, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/searchalt/youtube/music/request.go:35 +0xcc localhost:8080:5435:14
nap.tv/c/searchalt/youtube/music.metaSearch(0x3006f00, 0x398ef60, 0x3b4ed4c, 0x0, 0x3b4ed59, 0x0, 0x3b4ed61, 0x0, 0x398ef60, 0x10af004d, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/searchalt/youtube/music/handlers.go:57 +0x4 localhost:8080:5435:14
nap.tv/c/searchalt/youtube/music.MetaOpenSearchEngine(0x3006f00, 0x398ef60, 0x3b4ed4c, 0x0, 0x3b4ed59, 0x0, 0x3b4ed61, 0x0, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/searchalt/youtube/music/handlers.go:31 +0x2 localhost:8080:5435:14
reflect.Value.call(0xb40c0, 0x2f578b8, 0x13, 0x14336d, 0x4, 0x42fe360, 0x4, 0x4, 0x4169880, 0x398f080, ...) localhost:8080:5435:14
/Users/thetv/goroot/src/reflect/value.go:460 +0x72 localhost:8080:5435:14
reflect.Value.Call(0xb40c0, 0x2f578b8, 0x13, 0x42fe360, 0x4, 0x4, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/reflect/value.go:321 +0xc localhost:8080:5435:14
thep.uk/hamux.(*link).handleFunc(0x3af9680, 0x3006f00, 0x398ef60, 0x2ffc9c0, 0x5fbf720, 0x2ffc9c0, 0x5fbf720, 0x0, 0x7b940) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/serve.go:139 +0x9 localhost:8080:5435:14
thep.uk/hamux.(*link).ServeHTTP(0x3af9680, 0x30061c0, 0x40bd1e0, 0x39b5900) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/serve.go:80 +0x62 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39b5700) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http/log.(*Link).ServeHTTP(0x402c240, 0x30061c0, 0x40bd1e0, 0x39b5500) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/log/log.go:38 +0x22 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39b5100) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/global.(*state).ServeHTTP(0x3690178, 0x30061c0, 0x40bd1e0, 0x39b5100) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/global/global.go:70 +0x12 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39b4f00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/auth/cookie.cookieHandler.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39b4d00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/auth/cookie/cookie.go:53 +0x2c localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39b4a00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.enhancer.ServeHTTP(0x3bda8c0, 0x1, 0x1, 0x30061c0, 0x40bd1e0, 0x39b4800) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:127 +0x1d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39b4500) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.Config.ServeHTTP(0x4261394, 0xa, 0x0, 0x0, 0x0, 0x4261376, 0xa, 0x43a028b, 0x3, 0x3ad9a60, ...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:108 +0x7d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39b4100) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http.(*manager).ServeHTTP(0x402c200, 0x30061c0, 0x40bd1e0, 0x39c1e00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:91 +0x20 localhost:8080:5435:14
github.com/gorilla/mux.(*Router).ServeHTTP(0x4048000, 0x30061c0, 0x40bd1e0, 0x39c1900) localhost:8080:5435:14
/Users/thetv/go/src/github.com/gorilla/mux/mux.go:162 +0xe localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39c1700) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/global.(*state).ServeHTTP(0x3690178, 0x30061c0, 0x40bd1e0, 0x39c1700) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/global/global.go:70 +0x12 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39c1500) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/auth/cookie.cookieHandler.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39c1300) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/auth/cookie/cookie.go:53 +0x2c localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39c1100) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.enhancer.ServeHTTP(0x3bda950, 0x1, 0x1, 0x30061c0, 0x40bd1e0, 0x39c0d00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:127 +0x1d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39c0b00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.Config.ServeHTTP(0x4261394, 0xa, 0x0, 0x0, 0x0, 0x4261376, 0xa, 0x43a028b, 0x3, 0x3ad9a60, ...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:108 +0x7d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x40bd1e0, 0x39c0600) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http.(*manager).ServeHTTP(0x402dd60, 0x30061c0, 0x40bd1e0, 0x39c0400) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:91 +0x20 localhost:8080:5435:14
thep.uk/engine/urlfetch.fetchInternal(0x39c0200, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/roundtrip_js.go:67 +0x40 localhost:8080:5435:14
thep.uk/engine/urlfetch.jsTr.RoundTrip(0x2ffb960, 0x369bd20, 0x39c0200, 0x39c0200, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/roundtrip_js.go:46 +0x35 localhost:8080:5435:14
thep.uk/engine/urlfetch.enhanceTrip.RoundTrip(0x39e6100, 0xc, 0x10, 0x2ffcba0, 0x4381180, 0x39c0000, 0x160, 0x150, 0xf2c60) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/urlfetch.go:65 +0x18 localhost:8080:5435:14
net/http.send(0x39c0000, 0x2ffcb80, 0x398e570, 0x0, 0x0, 0x0, 0x0, 0x380cf70, 0x398e5a0, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:252 +0x5c localhost:8080:5435:14
net/http.(*Client).send(0x398e540, 0x39c0000, 0x0, 0x0, 0x0, 0x380cf70, 0x0, 0x1, 0x7b940) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:176 +0x13 localhost:8080:5435:14
net/http.(*Client).do(0x398e540, 0x39c0000, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:718 +0x38 localhost:8080:5435:14
net/http.(*Client).Do(...) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:586 localhost:8080:5435:14
nap.tv/c/res.httpGet(0x3006e40, 0x429fdc0, 0x3b4ed20, 0x49, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:300 +0x40 localhost:8080:5435:14
nap.tv/c/res.Get.func1(0x3006e40, 0x429fdc0) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:185 +0x4 localhost:8080:5435:14
nap.tv/c/res.Get(0x3006f00, 0x3b715f0, 0x3b4ed20, 0x49, 0x38cdee8, 0x1, 0x1, 0x7ff8000100000400, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:255 +0x15 localhost:8080:5435:14
nap.tv/c/handler/multisearch.fromDefaultSearch(0x3006f00, 0x3b715f0, 0x3b4ed20, 0x49, 0x42ab578, 0x7b500, 0x2fed930, 0x132020, 0x4380240, 0x7ff8000100000738, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/multisearch/multisearch.go:318 +0x3 localhost:8080:5435:14
nap.tv/c/handler/multisearch.fromCursors.func1(0x3ad8cc0, 0x3006f00, 0x3b715f0, 0x3a5d0a0, 0x2, 0x2, 0x3b4ed20, 0x49, 0x1) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/multisearch/multisearch.go:243 +0x2 localhost:8080:5435:14
created by nap.tv/c/handler/multisearch.fromCursors localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/multisearch/multisearch.go:241 +0x7a localhost:8080:5435:14
localhost:8080:5435:14
goroutine 1076 [semacquire]: localhost:8080:5435:14
sync.runtime_SemacquireMutex(0x36ab47c, 0x3900000000, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/sema.go:71 +0x2 localhost:8080:5435:14
sync.(*Mutex).lockSlow(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:138 +0x23 localhost:8080:5435:14
sync.(*Mutex).Lock(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:81 +0x7 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).output(0x36ab460, 0x2, 0x3a5d490, 0x35d80cc, 0xc, 0x41, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:672 +0x4 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).printf(0x36ab460, 0x2, 0x397dd60, 0x12, 0x3a220c0, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:655 +0xe localhost:8080:5435:14
github.com/golang/glog.Errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:1121 localhost:8080:5435:14
thep.uk/log/stderr.errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:65 localhost:8080:5435:14
thep.uk/log/stderr.std.Log(0x3006e40, 0x429f7c0, 0x1f4, 0x397dd60, 0x12, 0x3a220c0, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:55 +0xf localhost:8080:5435:14
thep.uk/log.Errorf(0x3006e40, 0x429f7c0, 0x14c8fe, 0xe, 0x3a220c0, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/log.go:44 +0x10 localhost:8080:5435:14
nap.tv/c/res.Get.func1(0x3006e40, 0x429f7c0) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:187 +0x14 localhost:8080:5435:14
nap.tv/c/res.Get(0x3006f00, 0x3b8f170, 0x41ec310, 0x67, 0x42572f0, 0x1, 0x1, 0x3b5ba00, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:255 +0x15 localhost:8080:5435:14
nap.tv/c/res.fromResourceType(0x3006f00, 0x3b8f170, 0x41ec310, 0x67, 0x4059735, 0xf, 0x100000004257538, 0x40004257558, 0x8, 0x3006e40, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/common.go:72 +0x13 localhost:8080:5435:14
nap.tv/c/res.From(0x3006f00, 0x3b8f170, 0x41ec310, 0x67, 0x4059735, 0xf, 0x0, 0x0, 0x4272700, 0x132eb004e, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/common.go:24 +0x4e localhost:8080:5435:14
nap.tv/c/handler.Poster(0x3006f00, 0x3b8f170, 0x41ec310, 0x67, 0x4059735, 0xf, 0x0, 0x0, 0x405974c, 0x9, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/poster.go:32 +0x2 localhost:8080:5435:14
reflect.Value.call(0xc0900, 0x2f577a8, 0x13, 0x14336d, 0x4, 0x4106240, 0x5, 0x8, 0x4169fc0, 0x429f780, ...) localhost:8080:5435:14
/Users/thetv/goroot/src/reflect/value.go:460 +0x72 localhost:8080:5435:14
reflect.Value.Call(0xc0900, 0x2f577a8, 0x13, 0x4106240, 0x5, 0x8, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/reflect/value.go:321 +0xc localhost:8080:5435:14
thep.uk/hamux.(*link).handleFunc(0x387f7c0, 0x3006f00, 0x3b8f170, 0x2ffc9c0, 0x5fbedc0, 0x2ffc9c0, 0x5fbedc0, 0x0, 0x7b940) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/serve.go:139 +0x9 localhost:8080:5435:14
thep.uk/hamux.(*link).ServeHTTP(0x387f7c0, 0x30061c0, 0x3bf85e0, 0x39c2300) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/serve.go:80 +0x62 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39c2100) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http/log.(*Link).ServeHTTP(0x39cd2e0, 0x30061c0, 0x3bf85e0, 0x39d3e00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/log/log.go:38 +0x22 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d3b00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/global.(*state).ServeHTTP(0x3690178, 0x30061c0, 0x3bf85e0, 0x39d3b00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/global/global.go:70 +0x12 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d3900) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/auth/cookie.cookieHandler.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d3700) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/auth/cookie/cookie.go:53 +0x2c localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d3500) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.enhancer.ServeHTTP(0x3bda660, 0x1, 0x1, 0x30061c0, 0x3bf85e0, 0x39d3300) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:127 +0x1d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d3100) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.Config.ServeHTTP(0x4261394, 0xa, 0x0, 0x0, 0x0, 0x4261376, 0xa, 0x43a028b, 0x3, 0x42924d0, ...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:108 +0x7d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d2c00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http.(*manager).ServeHTTP(0x39cd2a0, 0x30061c0, 0x3bf85e0, 0x39d2800) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:91 +0x20 localhost:8080:5435:14
github.com/gorilla/mux.(*Router).ServeHTTP(0x4048000, 0x30061c0, 0x3bf85e0, 0x39d2300) localhost:8080:5435:14
/Users/thetv/go/src/github.com/gorilla/mux/mux.go:162 +0xe localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d2000) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/global.(*state).ServeHTTP(0x3690178, 0x30061c0, 0x3bf85e0, 0x39d2000) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/global/global.go:70 +0x12 localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d7f00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/auth/cookie.cookieHandler.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d7c00) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/auth/cookie/cookie.go:53 +0x2c localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d7900) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.enhancer.ServeHTTP(0x3bda950, 0x1, 0x1, 0x30061c0, 0x3bf85e0, 0x39d7600) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:127 +0x1d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d7200) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/handlers/context.Config.ServeHTTP(0x4261394, 0xa, 0x0, 0x0, 0x0, 0x4261376, 0xa, 0x43a028b, 0x3, 0x42924d0, ...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/handlers/context/config.go:108 +0x7d localhost:8080:5435:14
thep.uk/hamux/http.ServeHTTP(0x30061c0, 0x3bf85e0, 0x39d6800) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:53 +0x27 localhost:8080:5435:14
thep.uk/hamux/http.(*manager).ServeHTTP(0x402dd60, 0x30061c0, 0x3bf85e0, 0x39d6400) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/hamux/http/http.go:91 +0x20 localhost:8080:5435:14
thep.uk/engine/urlfetch.fetchInternal(0x39d6200, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/roundtrip_js.go:67 +0x40 localhost:8080:5435:14
thep.uk/engine/urlfetch.jsTr.RoundTrip(0x2ffb960, 0x369bd20, 0x39d6200, 0x39d6200, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/roundtrip_js.go:46 +0x35 localhost:8080:5435:14
thep.uk/engine/urlfetch.enhanceTrip.RoundTrip(0x4169580, 0x4, 0x4, 0x2ffcba0, 0x3b5b740, 0x39e1f00, 0x160, 0x150, 0xf2c60) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/engine/urlfetch/urlfetch.go:65 +0x18 localhost:8080:5435:14
net/http.send(0x39e1f00, 0x2ffcb80, 0x3b8e210, 0x0, 0x0, 0x0, 0x0, 0x380ce60, 0x3b8e240, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:252 +0x5c localhost:8080:5435:14
net/http.(*Client).send(0x3b8e1e0, 0x39e1f00, 0x0, 0x0, 0x0, 0x380ce60, 0x0, 0x1, 0x7b940) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:176 +0x13 localhost:8080:5435:14
net/http.(*Client).do(0x3b8e1e0, 0x39e1f00, 0x0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:718 +0x38 localhost:8080:5435:14
net/http.(*Client).Do(...) localhost:8080:5435:14
/Users/thetv/goroot/src/net/http/client.go:586 localhost:8080:5435:14
nap.tv/c/res.Fetch.func1(0x3006ec0, 0x43bfa40) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:350 +0x1c localhost:8080:5435:14
nap.tv/c/res.Fetch(0x3006e40, 0x3bf4280, 0x40596b0, 0xa5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:390 +0x9 localhost:8080:5435:14
nap.tv/c/ui/poster.getPoster(0x3006e40, 0x3bf4280, 0x41ec1c0, 0x67, 0x4292190, 0xf, 0x42921d0, 0x9, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/poster/poster.go:218 +0x18 localhost:8080:5435:14
nap.tv/c/ui/poster.(*Poster).read(0x3b53220, 0x3006e40, 0x3bf4280, 0x7ff8000100000636, 0x412ca40) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/poster/poster.go:156 +0x9 localhost:8080:5435:14
nap.tv/c/ui/poster.(*Poster).connectedCallback(0x3b53220, 0x3006e40, 0x3bf4280, 0x7ff8000100000636, 0x412ca40) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/poster/poster.go:99 +0xb localhost:8080:5435:14
nap.tv/c/ui/poster.(*Poster).ConnectedCallback.func1() localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/poster/poster.go:89 +0x2 localhost:8080:5435:14
created by nap.tv/c/util.observeIntersection.func1 localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/util/observer.go:176 +0xd localhost:8080:5435:14
localhost:8080:5435:14
goroutine 1089 [semacquire]: localhost:8080:5435:14
sync.runtime_SemacquireMutex(0x36ab47c, 0x900000000, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/sema.go:71 +0x2 localhost:8080:5435:14
sync.(*Mutex).lockSlow(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:138 +0x23 localhost:8080:5435:14
sync.(*Mutex).Lock(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:81 +0x7 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).output(0x36ab460, 0x0, 0x3a5d260, 0x35d80cc, 0xc, 0x3c, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:672 +0x4 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).printf(0x36ab460, 0x0, 0x41b3470, 0x2b, 0x3b7f680, 0x5, 0x8) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:655 +0xe localhost:8080:5435:14
github.com/golang/glog.Infof(...) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:1073 localhost:8080:5435:14
thep.uk/log/stderr.infof(...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:60 localhost:8080:5435:14
thep.uk/log/stderr.std.Log(0x3006e40, 0x4251c80, 0xc8, 0x41b3470, 0x2b, 0x3b7f680, 0x5, 0x8) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:51 +0x15 localhost:8080:5435:14
thep.uk/log.Infof(0x3006e40, 0x4251c80, 0x161148, 0x27, 0x3b7f680, 0x5, 0x8) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/log.go:75 +0x10 localhost:8080:5435:14
nap.tv/c/util.(*element).toJS.func1(0x7ff8000100000947, 0x419e3d8, 0x398f350, 0x3, 0x3, 0x419e400, 0x8) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/util/custom_element.go:151 +0x14 localhost:8080:5435:14
syscall/js.handleEvent() localhost:8080:5435:14
/Users/thetv/goroot/src/syscall/js/func.go:95 +0x24 localhost:8080:5435:14
syscall/js.Value.Call(0x7ff8000100000947, 0x419e3a8, 0x14b71e, 0xc, 0x39bd958, 0x2, 0x2, 0x3aef2b0, 0x40f8000) localhost:8080:5435:14
/Users/thetv/goroot/src/syscall/js/js.go:390 +0x3 localhost:8080:5435:14
github.local/mihai/html.nodeJS.SetAttribute(...) localhost:8080:5435:14
/Users/thetv/go/src/github.local/mihai/html/node_js.go:65 localhost:8080:5435:14
github.local/mihai/html.setFieldToNode(0x3010080, 0x4381ec0, 0x42feae0, 0x7b500, 0x36c4a00, 0x98, 0x419e3a8, 0x7b500) localhost:8080:5435:14
/Users/thetv/go/src/github.local/mihai/html/node_marshal.go:220 +0x14 localhost:8080:5435:14
github.local/mihai/html.marshalFieldToNode(0x3010080, 0x4381ec0, 0x3011cc0, 0x7b500, 0x7b500, 0x36c4a00, 0x98, 0x42feae0, 0x575c5, 0x8) localhost:8080:5435:14
/Users/thetv/go/src/github.local/mihai/html/node_marshal.go:21 +0x6b localhost:8080:5435:14
github.local/mihai/html.marshalStruct(0x3010080, 0x4381e90, 0x3011cc0, 0xb61c0, 0xb61c0, 0x36c4a00, 0x99, 0x4381e90, 0x39bde80) localhost:8080:5435:14
/Users/thetv/go/src/github.local/mihai/html/node_marshal.go:163 +0x30 localhost:8080:5435:14
github.local/mihai/html.marshalFieldToNode(0x3010080, 0x4381e90, 0x3011cc0, 0xb61c0, 0xb61c0, 0x36c4a00, 0x99, 0x0, 0x7ff8000200000091, 0x419e380) localhost:8080:5435:14
/Users/thetv/go/src/github.local/mihai/html/node_marshal.go:89 +0xb3 localhost:8080:5435:14
github.local/mihai/html.MarshalJS(0x7ff800010000031d, 0x38ff3c0, 0xb61c0, 0x36c4a00, 0x3006e40, 0x4251c80) localhost:8080:5435:14
/Users/thetv/go/src/github.local/mihai/html/html_js.go:23 +0x20 localhost:8080:5435:14
nap.tv/c/ui/video.(*Element).Throw(0x389e3c0, 0x3006e40, 0x4250880, 0x7ff800010000031d, 0x38ff3c0, 0x0, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/video/element.go:236 +0x4 localhost:8080:5435:14
nap.tv/c/ui/video.(*Element).AttributeChangedCallback.func1(0x389e3c0, 0x3006e40, 0x4250880, 0x7ff800010000031d, 0x38ff3c0, 0x42a0dc0, 0xae) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/video/element.go:193 +0x2 localhost:8080:5435:14
created by nap.tv/c/ui/video.(*Element).AttributeChangedCallback localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/video/element.go:192 +0x67 localhost:8080:5435:14
localhost:8080:5435:14
goroutine 1081 [semacquire]: localhost:8080:5435:14
sync.runtime_SemacquireMutex(0x36ab47c, 0x4100000000, 0x1) localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/sema.go:71 +0x2 localhost:8080:5435:14
sync.(*Mutex).lockSlow(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:138 +0x23 localhost:8080:5435:14
sync.(*Mutex).Lock(0x36ab478) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/mutex.go:81 +0x7 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).output(0x36ab460, 0x2, 0x3a5d500, 0x35d80cc, 0xc, 0x41, 0x0) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:672 +0x4 localhost:8080:5435:14
github.com/golang/glog.(*loggingT).printf(0x36ab460, 0x2, 0x397dda0, 0x12, 0x3a22100, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:655 +0xe localhost:8080:5435:14
github.com/golang/glog.Errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/github.com/golang/glog/glog.go:1121 localhost:8080:5435:14
thep.uk/log/stderr.errorf(...) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:65 localhost:8080:5435:14
thep.uk/log/stderr.std.Log(0x3006ec0, 0x424d020, 0x1f4, 0x397dda0, 0x12, 0x3a22100, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/stderr/stderr_js.go:55 +0xf localhost:8080:5435:14
thep.uk/log.Errorf(0x3006ec0, 0x424d020, 0x14c8fe, 0xe, 0x3a22100, 0x3, 0x4) localhost:8080:5435:14
/Users/thetv/go/src/thep.uk/log/log.go:44 +0x10 localhost:8080:5435:14
nap.tv/c/res.Get.func1(0x3006ec0, 0x424d020) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:187 +0x14 localhost:8080:5435:14
nap.tv/c/res.Get(0x3006e40, 0x3ada0c0, 0x41ec8c0, 0x67, 0x417b6e0, 0x1, 0x1, 0x4055700, 0x0, 0x0, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/client.go:255 +0x15 localhost:8080:5435:14
nap.tv/c/res.fromResourceType(0x3006e40, 0x3ada0c0, 0x41ec8c0, 0x67, 0x42aa5e0, 0xf, 0x7a, 0x0, 0x0, 0x1aa10009, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/common.go:72 +0x13 localhost:8080:5435:14
nap.tv/c/res.From(0x3006e40, 0x3ada0c0, 0x41ec8c0, 0x67, 0x42aa5e0, 0xf, 0x0, 0x0, 0x76280, 0x424ce90, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/res/common.go:24 +0x4e localhost:8080:5435:14
nap.tv/c/ui/sidebar.mediaURIFromItem(0x3006e40, 0x3ada0c0, 0x41ec8c0, 0x67, 0x42aa5e0, 0xf, 0x0, 0x7ff800020000094d, 0x42aa4c8, 0x15010007, ...) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/sidebar/sidebar.go:337 +0xa localhost:8080:5435:14
nap.tv/c/ui/sidebar.(*Element).updateMedia(0x42adbc0, 0x3006e40, 0x3ada0c0, 0x7ff8000100000322, 0x3b78710, 0x7ff8000100000053, 0x42aa400) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/sidebar/sidebar.go:296 +0x32 localhost:8080:5435:14
nap.tv/c/ui/sidebar.(*Element).focus.func1(0x40551c0, 0x1, 0x1, 0x3006e40, 0x3ada0c0, 0x42adbc0, 0x7ff8000100000322, 0x3b78710) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/sidebar/sidebar.go:114 +0x12 localhost:8080:5435:14
created by nap.tv/c/ui/sidebar.(*Element).focus localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/ui/sidebar/sidebar.go:105 +0x3 localhost:8080:5435:14
localhost:8080:5435:14
goroutine 1087 [semacquire]: localhost:8080:5435:14
sync.runtime_Semacquire(0x3ad8cc8) localhost:8080:5435:14
/Users/thetv/goroot/src/runtime/sema.go:56 +0x2 localhost:8080:5435:14
sync.(*WaitGroup).Wait(0x3ad8cc0) localhost:8080:5435:14
/Users/thetv/goroot/src/sync/waitgroup.go:130 +0x10 localhost:8080:5435:14
nap.tv/c/handler/multisearch.fromCursors.func2(0x3ad8cc0, 0x425c2a0, 0x3006f00, 0x3b715f0) localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/multisearch/multisearch.go:254 +0x2 localhost:8080:5435:14
created by nap.tv/c/handler/multisearch.fromCursors localhost:8080:5435:14
/Users/thetv/go/src/nap.tv/c/handler/multisearch/multisearch.go:253 +0xc localhost:8080:5435:14
exit code: 2 localhost:8080:5526:14
HTTP load failed with status 502. Load of media resource http://ckjh.streamon.fm:8000/CKJH-64k-m.mp3 failed. play_page
This error message will be blank when privacy.resistFingerprinting = true. If it is really necessary, please add it to the whitelist in MediaError::GetMessage: 502: Bad Gateway 2 localhost:8080:4999:333
Script terminated by timeout at:
runtime.findrunnable@http://localhost:8080/app.wasm:wasm-function[595]:0x8487d
runtime.schedule@http://localhost:8080/app.wasm:wasm-function[600]:0x87e0a
runtime.park_m@http://localhost:8080/app.wasm:wasm-function[603]:0x88c90
runtime.mcall@http://localhost:8080/app.wasm:wasm-function[984]:0xd440e
runtime.gopark@http://localhost:8080/app.wasm:wasm-function[544]:0x7a6b9
runtime.semacquire1@http://localhost:8080/app.wasm:wasm-function[671]:0x9af45
sync.runtime_SemacquireMutex@http://localhost:8080/app.wasm:wasm-function[963]:0xd259c
sync._Mutex.lockSlow@http://localhost:8080/app.wasm:wasm-function[1236]:0xeb97a
sync._Mutex.Lock@http://localhost:8080/app.wasm:wasm-function[1235]:0xeb51f
github.com_golang_glog._loggingT.output@http://localhost:8080/app.wasm:wasm-function[8022]:0x716cfe
github.com_golang_glog._loggingT.printf@http://localhost:8080/app.wasm:wasm-function[8021]:0x716a75
thep.uk_log_stderr.std.Log@http://localhost:8080/app.wasm:wasm-function[8086]:0x71daf1
thep.uk_log_stderr._std.Log@http://localhost:8080/app.wasm:wasm-function[8088]:0x71dd80
thep.uk_log.Errorf@http://localhost:8080/app.wasm:wasm-function[5928]:0x5080ea
nap.tv_c_res.Get.func1@http://localhost:8080/app.wasm:wasm-function[8969]:0x82e2a2
wasm_pc_f_loop@http://localhost:8080/app.wasm:wasm-function[1034]:0xd6e91
wasm_export_resume@http://localhost:8080/app.wasm:wasm-function[1033]:0xd6e72
_resume@http://localhost:8080/:5932:23
_makeFuncWrapper/<@http://localhost:8080/:5943:8
attributeChangedCallback@http://localhost:8080/:5333:18
syscall/js.valueCall@http://localhost:8080/:5771:31
syscall_js.valueCall@http://localhost:8080/app.wasm:wasm-function[1331]:0xf9d32
syscall_js.Value.Call@http://localhost:8080/app.wasm:wasm-function[1308]:0xf7295
github.com_themihai_html._nodeJS.SetAttribute@http://localhost:8080/app.wasm:wasm-function[8631]:0x7b8c1d
github.com_themihai_html.setFieldToNode@http://localhost:8080/app.wasm:wasm-function[8587]:0x7ae284
github.com_themihai_html.marshalFieldToNode@http://localhost:8080/app.wasm:wasm-function[8584]:0x7abc59
github.com_themihai_html.marshalStruct@http://localhost:8080/app.wasm:wasm-function[8585]:0x7acf2c
github.com_themihai_html.marshalFieldToNode@http://localhost:8080/app.wasm:wasm-function[8584]:0x7ac425
github.com_themihai_html.MarshalJS@http://localhost:8080/app.wasm:wasm-function[8562]:0x7a7f95
nap.tv_c_ui_video._Element.Throw@http://localhost:8080/app.wasm:wasm-function[10567]:0xa2e402
wasm_pc_f_loop@http://localhost:8080/app.wasm:wasm-function[1034]:0xd6e91
wasm_export_resume@http://localhost:8080/app.wasm:wasm-function[1033]:0xd6e72
_resume@http://localhost:8080/:5932:23
_makeFuncWrapper/<@http://localhost:8080/:5943:8
write@http://localhost:8080/:5446:13
syscall/js.valueCall@http://localhost:8080/:5771:31
syscall_js.valueCall@http://localhost:8080/app.wasm:wasm-function[1331]:0xf9d32
syscall_js.Value.Call@http://localhost:8080/app.wasm:wasm-function[1308]:0xf7295
syscall.fsCall@http://localhost:8080/app.wasm:wasm-function[1477]:0x108fbe
syscall.Write@http://localhost:8080/app.wasm:wasm-function[1473]:0x107d36
internal_poll._FD.Write@http://localhost:8080/app.wasm:wasm-function[1710]:0x131cef
os._File.Write@http://localhost:8080/app.wasm:wasm-function[1772]:0x13b358
github.com_golang_glog._loggingT.output@http://localhost:8080/app.wasm:wasm-function[8022]:0x7177da
github.com_golang_glog._loggingT.printf@http://localhost:8080/app.wasm:wasm-function[8021]:0x716a75
thep.uk_log_stderr.std.Log@http://localhost:8080/app.wasm:wasm-function[8086]:0x71db5d
thep.uk_log_stderr._std.Log@http://localhost:8080/app.wasm:wasm-function[8088]:0x71dd80
thep.uk_log.Infof@http://localhost:8080/app.wasm:wasm-function[5932]:0x508fd8
nap.tv_c_ui_video._Element.AttributeChangedCallback@http://localhost:8080/app.wasm:wasm-function[10566]:0xa2dc2b
nap.tv_c_util.AttributeChanger.AttributeChangedCallback_fm@http://localhost:8080/app.wasm:wasm-function[8715]:0x7c6f03
nap.tv_c_util._element.toJS.func2.1@http://localhost:8080/app.wasm:wasm-function[8693]:0x7c327e
wasm_pc_f_loop@http://localhost:8080/app.wasm:wasm-function[1034]:0xd6e91
wasm_export_resume@http://localhost:8080/app.wasm:wasm-function[1033]:0xd6e72
_resume@http://localhost:8080/:5932:23
_makeFuncWrapper/<@http://localhost:8080/:5943:8
ShakaPlayerLoad@http://localhost:8080/:5299:18

@ianlancetaylor ianlancetaylor changed the title wasm runtime crashes under certain/undefined conditions runtime: wasm runtime crashes under certain/undefined conditions Apr 21, 2020
@ianlancetaylor ianlancetaylor added arch-wasm WebAssembly issues NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. labels Apr 21, 2020
@ianlancetaylor ianlancetaylor added this to the Backlog milestone Apr 21, 2020
@ianlancetaylor
Copy link
Contributor

CC @neelance

@neelance
Copy link
Member

neelance commented Apr 24, 2020

I managed to debug the issue. What is happening is that

go/src/runtime/lock_js.go

Lines 196 to 200 in b0a8754

e := events[len(events)-1]
if e.returned {
goready(e.gp, 1)
return true
}
wakes up the innermost event handler, but then findrunnable of proc.go schedules a different goroutine instead of the e.gp here. This messes up the wasm event handling. It is a bit strange that another goroutine gets scheduled because the code above (beforeIdle) got called because no goroutine was awake any more. I guess there is some internal timer logic that if triggered at the very right moment makes some goroutine available.

I see three possible solutions:

  1. Make the event handler detect this situation and go to sleep once more. This can be done by changing
    gopark(nil, nil, waitReasonZero, traceEvNone, 1)
    to
	gopark(nil, nil, waitReasonZero, traceEvNone, 1)
	for events[len(events)-1] != e {
		gopark(nil, nil, waitReasonZero, traceEvNone, 1)
	}
  1. Make findrunnable not check the timers. One way to do this is to change

    go/src/runtime/proc.go

    Lines 2276 to 2279 in b0a8754

    if beforeIdle(delta) {
    // At least one goroutine got woken.
    goto top
    }
    to
	if beforeIdle(delta) {
		// At least one goroutine got woken.
		if gp, inheritTime := runqget(_p_); gp != nil {
			return gp, inheritTime
		}
		throw("findrunnable: no goroutine woken by beforeIdle")
	}
  1. Option 2 does not seem very clean to me. I guess there should be some way to make beforeIdle return the specific goroutine e.gp that needs to run next. I wasn't able to quickly figure out how to do this.

@ianlancetaylor @cherrymui I am not sure which way is a good solution. Do you have any preference?

@ianlancetaylor
Copy link
Contributor

I like the idea of having beforeIdle return the goroutine to run. I think findrunnable could handle it just as it handles the case of netpoll returning a goroutine: call casgstatus and traceGoUnpark, and return it.

@cherrymui
Copy link
Member

Yeah, I like option 3 as well. We may want to try that first.

Thanks for debugging this!

@gopherbot
Copy link

Change https://golang.org/cl/230178 mentions this issue: runtime: fix race condition between timer and event handler

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-wasm WebAssembly issues FrozenDueToAge NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Projects
None yet
Development

No branches or pull requests

5 participants