Open paddy01 opened 6 months ago
I did not know someone was still interested in this project. Saying this I have been working on this project recently to revive the front end and also look at how I can make mutex locking better. I was thinking about making it useful for DWDW as PCEP is used there as well. I will try to take a look at this issue today or tomorrow as I have everything set up.
I moved the mutex lock so that part should work now. But that also means you would probably get an error in the logs somewhere.
err := ptypes.UnmarshalAny(lsMessage, &NLRINode) if err != nil { logrus.Println(err) return } node := &Node{ ASN: NLRINode.LocalNode.Asn, IGPRouteID: NLRINode.LocalNode.IgpRouterId, } var LsAttribute api.LsAttribute for _, item := range p.Pattrs { if ptypes.Is(item, &LsAttribute) { err := ptypes.UnmarshalAny(item, &LsAttribute) if err != nil { logrus.Println(err) return } node.RouterID = LsAttribute.Node.LocalRouterId node.Name = LsAttribute.Node.Name node.SRRangeStart = int(LsAttribute.Node.SrCapabilities.Ranges[0].Begin) node.SRRangeEnd = int(LsAttribute.Node.SrCapabilities.Ranges[0].End) } }
Because UnmarshalAny does not work for some reason. Potentially due to new attributes in BGP LS. I can fix it too if you are interested and can provide some data on Juniper version etc...
I moved the mutex lock so that part should work now. But that also means you would probably get an error in the logs somewhere.
Yep now it crashes with
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0xab4b20]
goroutine 18 [running]:
gopcep/controller.(*TopoView).HandleNodeNLRI(0xc000070c00, 0xc0002c9270, 0xc0004f7110)
/opt/gopcep/controller/bgpls.go:165 +0x1e0
gopcep/controller.(*TopoView).Monitor(0xc000070c00, 0xc0004f7110)
/opt/gopcep/controller/bgpls.go:246 +0x2e5
gopcep/controller.(*Controller).StartBGPLS.func2(0xc000225f88?)
/opt/gopcep/controller/bgpls.go:521 +0x25
github.com/osrg/gobgp/pkg/server.(*BgpServer).MonitorTable.func2()
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/server.go:3827 +0x309
created by github.com/osrg/gobgp/pkg/server.(*BgpServer).MonitorTable in goroutine 7
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/server.go:3789 +0xd4
I can fix it too if you are interested and can provide some data on Juniper version etc...
I don't mind being guinea pig if you like - I'm actually looking at ODL at the same time.. running JunOS 21.4R3 atm.
I added a nil pointer check so it will should not crash anymore. I also added a debug check to print out whole LsAttribute as json.
I added a nil pointer check so it will should not crash anymore. I also added a debug check to print out whole LsAttribute as json.
Seems to have done the trick, it's no longer crashing at least :)
This issue is back! :( I established a bgp-ls session with a ios-xr device and when it started actually sending data the crash came back :(
fatal error: sync: Unlock of unlocked RWMutex
goroutine 21 [running]:
sync.fatal({0xdf77e3?, 0xc000176540?})
/usr/local/go/src/runtime/panic.go:1007 +0x18
sync.(*RWMutex).Unlock(0xc0002b4918)
/usr/local/go/src/sync/rwmutex.go:208 +0x45
panic({0xd79b60?, 0xc0006190b0?})
/usr/local/go/src/runtime/panic.go:770 +0x132
gopcep/controller.(*TopoView).HandleLinkNLRI(0xc000072c60, 0xc0003c1770, 0xc0003a2270)
/opt/gopcep/controller/bgpls.go:205 +0x3d9
gopcep/controller.(*TopoView).Monitor(0xc000072c60, 0xc0003a2270)
/opt/gopcep/controller/bgpls.go:252 +0x2c5
gopcep/controller.(*Controller).StartBGPLS.func2(0xc00023ff88?)
/opt/gopcep/controller/bgpls.go:525 +0x25
github.com/osrg/gobgp/pkg/server.(*BgpServer).MonitorTable.func2()
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/server.go:3827 +0x309
created by github.com/osrg/gobgp/pkg/server.(*BgpServer).MonitorTable in goroutine 7
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/server.go:3789 +0xd4
goroutine 1 [IO wait]:
internal/poll.runtime_pollWait(0x7fe2e3b32db8, 0x72)
/usr/local/go/src/runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0x8?, 0x0?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc000353600)
/usr/local/go/src/internal/poll/fd_unix.go:611 +0x2ac
net.(*netFD).accept(0xc000353600)
/usr/local/go/src/net/fd_unix.go:172 +0x29
net.(*TCPListener).accept(0xc000070520)
/usr/local/go/src/net/tcpsock_posix.go:159 +0x1e
net.(*TCPListener).Accept(0xc000070520)
/usr/local/go/src/net/tcpsock.go:327 +0x30
gopcep/pcep.ListenForNewSession({0x213eeb0, 0xc000154090}, 0xc0001441a0)
/opt/gopcep/pcep/session.go:567 +0x29a
main.startController(0xc00037ce40?)
/opt/gopcep/main.go:142 +0x735
github.com/urfave/cli/v2.(*App).RunContext(0xc00038c4e0, {0x2143b18, 0x279e120}, {0xc000034190, 0x1, 0x1})
/root/go/pkg/mod/github.com/urfave/cli/v2@v2.3.0/app.go:322 +0x928
github.com/urfave/cli/v2.(*App).Run(...)
/root/go/pkg/mod/github.com/urfave/cli/v2@v2.3.0/app.go:224
main.main()
/opt/gopcep/main.go:166 +0x165
goroutine 7 [chan receive]:
gopcep/controller.(*Controller).StartBGPLS(0xc000154090)
/opt/gopcep/controller/bgpls.go:534 +0x92b
created by gopcep/controller.Start in goroutine 1
/opt/gopcep/controller/controller.go:428 +0x538
goroutine 8 [select]:
gopcep/controller.Start.func1()
/opt/gopcep/controller/controller.go:432 +0x98
created by gopcep/controller.Start in goroutine 1
/opt/gopcep/controller/controller.go:430 +0x576
goroutine 9 [IO wait]:
internal/poll.runtime_pollWait(0x7fe2e3b32eb0, 0x72)
/usr/local/go/src/runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0x7?, 0x1?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc000353380)
/usr/local/go/src/internal/poll/fd_unix.go:611 +0x2ac
net.(*netFD).accept(0xc000353380)
/usr/local/go/src/net/fd_unix.go:172 +0x29
net.(*TCPListener).accept(0xc000349cc0)
/usr/local/go/src/net/tcpsock_posix.go:159 +0x1e
net.(*TCPListener).Accept(0xc000349cc0)
/usr/local/go/src/net/tcpsock.go:327 +0x30
google.golang.org/grpc.(*Server).Serve(0xc0003ff340, {0x2142480, 0xc000349cc0})
/root/go/pkg/mod/google.golang.org/grpc@v1.37.0/server.go:739 +0x363
gopcep/grpcapi.Start.func1()
/opt/gopcep/grpcapi/api.go:144 +0x45
created by gopcep/grpcapi.Start in goroutine 1
/opt/gopcep/grpcapi/api.go:143 +0x9a5
goroutine 10 [IO wait]:
internal/poll.runtime_pollWait(0x7fe2e3b32cc0, 0x72)
/usr/local/go/src/runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0x9?, 0xc0001a71d0?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc000353680)
/usr/local/go/src/internal/poll/fd_unix.go:611 +0x2ac
net.(*netFD).accept(0xc000353680)
/usr/local/go/src/net/fd_unix.go:172 +0x29
net.(*TCPListener).accept(0xc000070540)
/usr/local/go/src/net/tcpsock_posix.go:159 +0x1e
net.(*TCPListener).Accept(0xc000070540)
/usr/local/go/src/net/tcpsock.go:327 +0x30
crypto/tls.(*listener).Accept(0xc0000e4240)
/usr/local/go/src/crypto/tls/tls.go:66 +0x27
net/http.(*Server).Serve(0xc0004ee3c0, {0x21426f0, 0xc0000e4240})
/usr/local/go/src/net/http/server.go:3255 +0x33e
net/http.(*Server).ServeTLS(0xc0004ee3c0, {0x2142480, 0xc000070540}, {0xc00032a2c0, 0x1c}, {0xc00032a2e0, 0x1c})
/usr/local/go/src/net/http/server.go:3325 +0x486
net/http.(*Server).ListenAndServeTLS(0xc0004ee3c0, {0xc00032a2c0, 0x1c}, {0xc00032a2e0, 0x1c})
/usr/local/go/src/net/http/server.go:3482 +0x125
gopcep/restapi.Start.func3()
/opt/gopcep/restapi/restapi.go:211 +0x46
created by gopcep/restapi.Start in goroutine 1
/opt/gopcep/restapi/restapi.go:210 +0x526
goroutine 11 [select]:
reflect.rselect({0xc000208fa0, 0x5, 0xc000687da8?})
/usr/local/go/src/runtime/select.go:589 +0x2c5
reflect.Select({0xc000421440?, 0x5, 0x0?})
/usr/local/go/src/reflect/value.go:3169 +0x5ca
github.com/osrg/gobgp/pkg/server.(*BgpServer).Serve(0xc0002b8488)
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/server.go:418 +0x427
created by gopcep/controller.(*Controller).StartBGPLS in goroutine 7
/opt/gopcep/controller/bgpls.go:480 +0xa5
goroutine 12 [select]:
github.com/osrg/gobgp/pkg/server.(*BgpServer).MonitorPeer.func1()
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/server.go:3849 +0x22e
created by github.com/osrg/gobgp/pkg/server.(*BgpServer).MonitorPeer in goroutine 7
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/server.go:3843 +0xbe
goroutine 52 [select]:
github.com/eapache/channels.(*InfiniteChannel).infiniteBuffer(0xc000071000)
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:49 +0xe5
created by github.com/eapache/channels.NewInfiniteChannel in goroutine 11
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:19 +0x156
goroutine 14 [select]:
github.com/eapache/channels.(*InfiniteChannel).infiniteBuffer(0xc000070960)
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:49 +0xe5
created by github.com/eapache/channels.NewInfiniteChannel in goroutine 11
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:19 +0x156
goroutine 53 [select]:
github.com/osrg/gobgp/pkg/server.(*fsmHandler).established(0xc00014a230, {0x2143d80, 0xc00035de50})
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1757 +0x454
github.com/osrg/gobgp/pkg/server.(*fsmHandler).loop(0xc00014a230, {0x2143d80, 0xc00035de50}, 0xc000210be0?)
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1870 +0x236
created by github.com/osrg/gobgp/pkg/server.newFSMHandler in goroutine 11
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:406 +0x1e5
goroutine 48 [select]:
github.com/eapache/channels.(*InfiniteChannel).infiniteBuffer(0xc000070f80)
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:49 +0xe5
created by github.com/eapache/channels.NewInfiniteChannel in goroutine 11
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:19 +0x156
goroutine 17 [select]:
github.com/eapache/channels.(*InfiniteChannel).infiniteBuffer(0xc000070a00)
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:49 +0xe5
created by github.com/eapache/channels.NewInfiniteChannel in goroutine 11
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:19 +0x156
goroutine 49 [select]:
github.com/osrg/gobgp/pkg/server.(*fsmHandler).established(0xc000149e30, {0x2143d80, 0xc00035dc20})
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1757 +0x454
github.com/osrg/gobgp/pkg/server.(*fsmHandler).loop(0xc000149e30, {0x2143d80, 0xc00035dc20}, 0xc000210be0?)
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1870 +0x236
created by github.com/osrg/gobgp/pkg/server.newFSMHandler in goroutine 11
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:406 +0x1e5
goroutine 19 [select]:
github.com/eapache/channels.(*InfiniteChannel).infiniteBuffer(0xc000070a40)
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:49 +0xe5
created by github.com/eapache/channels.NewInfiniteChannel in goroutine 11
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:19 +0x156
goroutine 20 [chan receive]:
github.com/osrg/gobgp/pkg/server.(*watcher).loop(0xc00035ceb0)
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/server.go:4114 +0x5b
created by github.com/osrg/gobgp/pkg/server.(*BgpServer).MonitorTable.func1.(*BgpServer).watch.2 in goroutine 11
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/server.go:4299 +0x70f
goroutine 22 [select]:
github.com/eapache/channels.(*InfiniteChannel).infiniteBuffer(0xc000070a60)
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:49 +0xe5
created by github.com/eapache/channels.NewInfiniteChannel in goroutine 11
/root/go/pkg/mod/github.com/eapache/channels@v1.1.0/infinite_channel.go:19 +0x156
goroutine 23 [chan receive]:
github.com/osrg/gobgp/pkg/server.(*watcher).loop(0xc00035cf50)
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/server.go:4114 +0x5b
created by github.com/osrg/gobgp/pkg/server.(*BgpServer).MonitorPeer.func1.(*BgpServer).watch.3 in goroutine 11
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/server.go:4299 +0x70f
goroutine 54 [select]:
github.com/osrg/gobgp/pkg/server.(*fsmHandler).sendMessageloop(0xc00014a230, {0x2143d80, 0xc00035de50}, 0xc000070de0?)
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1683 +0x1ae
created by github.com/osrg/gobgp/pkg/server.(*fsmHandler).established in goroutine 53
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1741 +0x1aa
goroutine 50 [select]:
github.com/osrg/gobgp/pkg/server.(*fsmHandler).sendMessageloop(0xc000149e30, {0x2143d80, 0xc00035dc20}, 0xc000070f40?)
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1683 +0x1ae
created by github.com/osrg/gobgp/pkg/server.(*fsmHandler).established in goroutine 49
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1741 +0x1aa
goroutine 51 [runnable]:
github.com/osrg/gobgp/pkg/server.(*fsmHandler).recvMessageloop(0xc000149e30, {0x2143d80?, 0xc00035dc20?}, 0xc000210be0?)
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1723 +0x94
created by github.com/osrg/gobgp/pkg/server.(*fsmHandler).established in goroutine 49
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1743 +0x257
goroutine 55 [IO wait]:
internal/poll.runtime_pollWait(0x7fe2e3b32ad0, 0x72)
/usr/local/go/src/runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc0000cc080?, 0xc0003a87f8?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0000cc080, {0xc0003a87f8, 0x13, 0x13})
/usr/local/go/src/internal/poll/fd_unix.go:164 +0x27a
net.(*netFD).Read(0xc0000cc080, {0xc0003a87f8?, 0x0?, 0xc173cb5c77c04693?})
/usr/local/go/src/net/fd_posix.go:55 +0x25
net.(*conn).Read(0xc00049d148, {0xc0003a87f8?, 0x18?, 0x273e020?})
/usr/local/go/src/net/net.go:179 +0x45
io.ReadAtLeast({0x213a520, 0xc00049d148}, {0xc0003a87f8, 0x13, 0x13}, 0x13)
/usr/local/go/src/io/io.go:335 +0x90
io.ReadFull(...)
/usr/local/go/src/io/io.go:354
github.com/osrg/gobgp/pkg/server.readAll({0x2149ea8, 0xc00049d148}, 0x13)
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:796 +0x6d
github.com/osrg/gobgp/pkg/server.(*fsmHandler).recvMessageWithError(0xc00014a230)
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:933 +0x3a
github.com/osrg/gobgp/pkg/server.(*fsmHandler).recvMessageloop(0xc00014a230, {0x2143d80?, 0xc00035de50?}, 0xc000210be0?)
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1721 +0x5b
created by github.com/osrg/gobgp/pkg/server.(*fsmHandler).established in goroutine 53
/root/go/pkg/mod/github.com/osrg/gobgp@v0.0.0-20210402043138-915bfc2d8189/pkg/server/fsm.go:1743 +0x257
goroutine 56 [IO wait]:
internal/poll.runtime_pollWait(0x7fe2e3b329d8, 0x72)
/usr/local/go/src/runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00040dd00?, 0xc00009f400?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00040dd00, {0xc00009f400, 0x400, 0x400})
/usr/local/go/src/internal/poll/fd_unix.go:164 +0x27a
net.(*netFD).Read(0xc00040dd00, {0xc00009f400?, 0x400?, 0x273e020?})
/usr/local/go/src/net/fd_posix.go:55 +0x25
net.(*conn).Read(0xc00049d8a8, {0xc00009f400?, 0xc4fea0?, 0x1?})
/usr/local/go/src/net/net.go:179 +0x45
gopcep/pcep.startPCEPSession({0x2149ea8, 0xc00049d8a8}, {0x213eeb0, 0xc000154090})
/opt/gopcep/pcep/session.go:524 +0x4da
created by gopcep/pcep.ListenForNewSession in goroutine 1
/opt/gopcep/pcep/session.go:588 +0x626
goroutine 57 [sleep]:
time.Sleep(0x6fc23ac00)
/usr/local/go/src/runtime/time.go:195 +0x115
gopcep/pcep.(*Session).StartKeepAlive(0xc00002ac60)
/opt/gopcep/pcep/session.go:293 +0x435
created by gopcep/pcep.(*Session).HandleNewMsg in goroutine 56
/opt/gopcep/pcep/session.go:388 +0x1c5
goroutine 58 [select]:
gopcep/pcep.(*Session).HandleDeadTimer(0xc00002ac60)
/opt/gopcep/pcep/session.go:319 +0xad
created by gopcep/pcep.(*Session).HandleNewMsg in goroutine 56
/opt/gopcep/pcep/session.go:389 +0x207
goroutine 59 [select]:
gopcep/controller.(*Controller).watchSession(0xc000154090, 0xc00002ac60)
/opt/gopcep/controller/controller.go:460 +0x85
created by gopcep/controller.Start.func1 in goroutine 8
/opt/gopcep/controller/controller.go:439 +0x474
goroutine 60 [IO wait]:
internal/poll.runtime_pollWait(0x7fe2e3b328e0, 0x72)
/usr/local/go/src/runtime/netpoll.go:345 +0x85
internal/poll.(*pollDesc).wait(0xc00040df00?, 0xc000282400?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00040df00, {0xc000282400, 0x400, 0x400})
/usr/local/go/src/internal/poll/fd_unix.go:164 +0x27a
net.(*netFD).Read(0xc00040df00, {0xc000282400?, 0x400?, 0xc000065008?})
/usr/local/go/src/net/fd_posix.go:55 +0x25
net.(*conn).Read(0xc00049d8b8, {0xc000282400?, 0xc4fea0?, 0x1?})
/usr/local/go/src/net/net.go:179 +0x45
gopcep/pcep.startPCEPSession({0x2149ea8, 0xc00049d8b8}, {0x213eeb0, 0xc000154090})
/opt/gopcep/pcep/session.go:524 +0x4da
created by gopcep/pcep.ListenForNewSession in goroutine 1
/opt/gopcep/pcep/session.go:588 +0x626
goroutine 61 [sleep]:
time.Sleep(0x6fc23ac00)
/usr/local/go/src/runtime/time.go:195 +0x115
gopcep/pcep.(*Session).StartKeepAlive(0xc00002b050)
/opt/gopcep/pcep/session.go:293 +0x435
created by gopcep/pcep.(*Session).HandleNewMsg in goroutine 60
/opt/gopcep/pcep/session.go:388 +0x1c5
goroutine 62 [select]:
gopcep/pcep.(*Session).HandleDeadTimer(0xc00002b050)
/opt/gopcep/pcep/session.go:319 +0xad
created by gopcep/pcep.(*Session).HandleNewMsg in goroutine 60
/opt/gopcep/pcep/session.go:389 +0x207
goroutine 63 [select]:
gopcep/controller.(*Controller).watchSession(0xc000154090, 0xc00002b050)
/opt/gopcep/controller/controller.go:460 +0x85
created by gopcep/controller.Start.func1 in goroutine 8
/opt/gopcep/controller/controller.go:439 +0x474
After a bit of hassle I managed to get gopcep to function. Have to control it from remote so had to hackaround in your .js and stuff to get it functioning. But after finally getting everything up and running I attached it to a Juniper box and configured all knobs that has to be configured.. when it finally started to send bgp-ls updates gopcep broke down with the error "fatal error: sync: Unlock of unlocked RWMutex".
Complete log from start to crash: