hybridgroup / gophercon-2017

Hardware hack day support info for Gophercon 2017 and beyond!
https://gobot.io
MIT License
26 stars 22 forks source link

Crash: Concurrent map writes Edison Step 7 #17

Open cweill opened 8 years ago

cweill commented 8 years ago
$ ./runner.sh step7 10.56.239.99
Compiling...
Copying...
step7                                                                                                                                                                                          100% 6182KB   3.0MB/s   00:02    
Running...
2016/07/13 23:47:07 Initializing API on :3000...
2016/07/13 23:47:07 WARNING: API using insecure connection. We recommend using an SSL certificate with Gobot.
2016/07/13 23:47:07 Initializing Robot airlock ...
2016/07/13 23:47:07 Initializing connections...
2016/07/13 23:47:07 Initializing connection edison ...
2016/07/13 23:47:07 Initializing devices...
2016/07/13 23:47:07 Initializing device button ...
2016/07/13 23:47:07 Initializing device blue ...
2016/07/13 23:47:07 Initializing device green ...
2016/07/13 23:47:07 Initializing device red ...
2016/07/13 23:47:07 Initializing device buzzer ...
2016/07/13 23:47:07 Initializing device touch ...
2016/07/13 23:47:07 Initializing device rotary ...
2016/07/13 23:47:07 Initializing device sensor ...
2016/07/13 23:47:07 Starting Robot airlock ...
2016/07/13 23:47:07 Starting connections...
2016/07/13 23:47:07 Starting connection edison...
2016/07/13 23:47:07 Starting devices...
2016/07/13 23:47:07 Starting device button on pin 2...
2016/07/13 23:47:07 Starting device blue on pin 3...
2016/07/13 23:47:07 Starting device green on pin 4...
2016/07/13 23:47:07 Starting device red on pin 5...
2016/07/13 23:47:07 Starting device buzzer on pin 7...
2016/07/13 23:47:07 Starting device touch on pin 8...
2016/07/13 23:47:07 Starting device rotary on pin 0...
2016/07/13 23:47:07 Starting device sensor on pin 1...
2016/07/13 23:47:07 Starting work...
fatal error: concurrent map writes

goroutine 5 [running]:
runtime.throw(0x82ccf55, 0x15)
    /usr/local/go/src/runtime/panic.go:566 +0x7f fp=0x1871ddec sp=0x1871dde0
runtime.mapassign1(0x828a120, 0x1870fa40, 0x1871ded8, 0x1871deb4)
    /usr/local/go/src/runtime/hashmap.go:458 +0x95 fp=0x1871de78 sp=0x1871ddec
github.com/hybridgroup/gobot/platforms/intel-iot/edison.(*EdisonAdaptor).digitalPin(0x18712330, 0x82c7d99, 0x1, 0x82c7e92, 0x2, 0x0, 0x0, 0x0, 0x0)
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/intel-iot/edison/edison_adaptor.go:308 +0x14a fp=0x1871df14 sp=0x1871de78
github.com/hybridgroup/gobot/platforms/intel-iot/edison.(*EdisonAdaptor).DigitalRead(0x18712330, 0x82c7d99, 0x1, 0x0, 0x0, 0x0)
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/intel-iot/edison/edison_adaptor.go:386 +0x5a fp=0x1871df44 sp=0x1871df14
github.com/hybridgroup/gobot/platforms/gpio.(*ButtonDriver).Start.func1(0x18712450, 0x1879ba6c)
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/gpio/button_driver.go:59 +0x60 fp=0x1871dfd8 sp=0x1871df44
runtime.goexit()
    /usr/local/go/src/runtime/asm_386.s:1612 +0x1 fp=0x1871dfdc sp=0x1871dfd8
created by github.com/hybridgroup/gobot/platforms/gpio.(*ButtonDriver).Start
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/gpio/button_driver.go:72 +0x61

goroutine 1 [runnable]:
syscall.Syscall(0x4, 0x13, 0x1879bc50, 0x3, 0x3, 0x3, 0x0)
    /usr/local/go/src/syscall/asm_linux_386.s:20 +0x5
syscall.write(0x13, 0x1879bc50, 0x3, 0x8, 0x828fd60, 0x0, 0x0)
    /usr/local/go/src/syscall/zsyscall_linux_386.go:1064 +0x5b
syscall.Write(0x13, 0x1879bc50, 0x3, 0x8, 0x16e8643a, 0x0, 0x0)
    /usr/local/go/src/syscall/syscall_unix.go:180 +0x45
os.(*File).write(0x1870aae0, 0x1879bc50, 0x3, 0x8, 0x0, 0x0, 0x0)
    /usr/local/go/src/os/file_unix.go:249 +0x72
os.(*File).Write(0x1870aae0, 0x1879bc50, 0x3, 0x8, 0x1879bc50, 0x0, 0x0)
    /usr/local/go/src/os/file.go:142 +0x6f
github.com/hybridgroup/gobot/sysfs.glob.func1(0x83c07a0, 0x1870aae0, 0x1879bc50, 0x3, 0x8, 0x8, 0x0, 0x0)
    /Users/cew225/src/github.com/hybridgroup/gobot/sysfs/digital_pin.go:159 +0x6e
github.com/hybridgroup/gobot/sysfs.(*digitalPin).Direction(0x187ca100, 0x82c8024, 0x3, 0x0, 0x0)
    /Users/cew225/src/github.com/hybridgroup/gobot/sysfs/digital_pin.go:63 +0x8a
github.com/hybridgroup/gobot/platforms/intel-iot/edison.(*EdisonAdaptor).digitalPin(0x18712330, 0x82c7d94, 0x1, 0x82c8024, 0x3, 0x0, 0x0, 0x0, 0x0)
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/intel-iot/edison/edison_adaptor.go:364 +0x84c
github.com/hybridgroup/gobot/platforms/intel-iot/edison.(*EdisonAdaptor).DigitalWrite(0x18712330, 0x82c7d94, 0x1, 0x0, 0x0, 0x0)
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/intel-iot/edison/edison_adaptor.go:395 +0x52
github.com/hybridgroup/gobot/platforms/gpio.(*LedDriver).Off(0x18712390, 0x0, 0x0)
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/gpio/led_driver.go:85 +0x5e
main.TurnOff()
    /Users/cew225/github/hybridgroup/gobot-workshop-2016/airlock/edison/step7.go:42 +0x35
main.Reset()
    /Users/cew225/github/hybridgroup/gobot-workshop-2016/airlock/edison/step7.go:47 +0x1e
main.main.func1()
    /Users/cew225/github/hybridgroup/gobot-workshop-2016/airlock/edison/step7.go:72 +0x1e
github.com/hybridgroup/gobot.(*Robot).Start(0x18712480, 0x0, 0x0, 0x0)
    /Users/cew225/src/github.com/hybridgroup/gobot/robot.go:147 +0x43f
github.com/hybridgroup/gobot.(*Robots).Start(0x1879b580, 0x0, 0x0, 0x0)
    /Users/cew225/src/github.com/hybridgroup/gobot/robot.go:60 +0x87
github.com/hybridgroup/gobot.(*Gobot).Start(0x1870ed80, 0x0, 0x0, 0x0)
    /Users/cew225/src/github.com/hybridgroup/gobot/gobot.go:59 +0x62
main.main()
    /Users/cew225/github/hybridgroup/gobot-workshop-2016/airlock/edison/step7.go:101 +0x7ef

goroutine 19 [syscall]:
os/signal.signal_recv(0x0)
    /usr/local/go/src/runtime/sigqueue.go:116 +0x11e
os/signal.loop()
    /usr/local/go/src/os/signal/signal_unix.go:22 +0x1a
created by os/signal.init.1
    /usr/local/go/src/os/signal/signal_unix.go:28 +0x36

goroutine 3 [IO wait]:
net.runtime_pollWait(0xb7732f78, 0x72, 0x0)
    /usr/local/go/src/runtime/netpoll.go:160 +0x55
net.(*pollDesc).wait(0x1874c0f8, 0x72, 0x0, 0x0)
    /usr/local/go/src/net/fd_poll_runtime.go:73 +0x35
net.(*pollDesc).waitRead(0x1874c0f8, 0x0, 0x0)
    /usr/local/go/src/net/fd_poll_runtime.go:78 +0x33
net.(*netFD).accept(0x1874c0c0, 0x0, 0x83bd080, 0x187503a0)
    /usr/local/go/src/net/fd_unix.go:396 +0x20b
net.(*TCPListener).accept(0x187541f8, 0x0, 0x0, 0x0)
    /usr/local/go/src/net/tcpsock_posix.go:132 +0x2d
net.(*TCPListener).AcceptTCP(0x187541f8, 0x84558d0, 0x0, 0x0)
    /usr/local/go/src/net/tcpsock.go:209 +0x8f
net/http.tcpKeepAliveListener.Accept(0x187541f8, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/net/http/server.go:2536 +0x3d
net/http.(*Server).Serve(0x1876a050, 0x83beec0, 0x187541f8, 0x0, 0x0)
    /usr/local/go/src/net/http/server.go:2223 +0x216
net/http.(*Server).ListenAndServe(0x1876a050, 0x0, 0x0)
    /usr/local/go/src/net/http/server.go:2199 +0xd9
net/http.ListenAndServe(0x18750358, 0x5, 0x0, 0x0, 0x0, 0x0)
    /usr/local/go/src/net/http/server.go:2301 +0x7a
github.com/hybridgroup/gobot/api.NewAPI.func1.1(0x187141c0)
    /Users/cew225/src/github.com/hybridgroup/gobot/api/api.go:45 +0x1c5
created by github.com/hybridgroup/gobot/api.NewAPI.func1
    /Users/cew225/src/github.com/hybridgroup/gobot/api/api.go:47 +0x156

goroutine 4 [select]:
github.com/hybridgroup/gobot/platforms/gpio.(*ButtonDriver).Start.func1(0x18712360, 0x1879ba68)
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/gpio/button_driver.go:66 +0x1be
created by github.com/hybridgroup/gobot/platforms/gpio.(*ButtonDriver).Start
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/gpio/button_driver.go:72 +0x61

goroutine 6 [runnable]:
github.com/hybridgroup/gobot/platforms/gpio.(*AnalogSensorDriver).Start.func1(0x187143c0, 0x1879ba70)
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/gpio/analog_sensor_driver.go:62
created by github.com/hybridgroup/gobot/platforms/gpio.(*AnalogSensorDriver).Start
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/gpio/analog_sensor_driver.go:77 +0x61

goroutine 7 [runnable]:
github.com/hybridgroup/gobot/platforms/gpio.(*GroveTemperatureSensorDriver).Start.func1(0x18714440, 0x0, 0x40af0e00)
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/gpio/grove_temperature_sensor_driver.go:59
created by github.com/hybridgroup/gobot/platforms/gpio.(*GroveTemperatureSensorDriver).Start
    /Users/cew225/src/github.com/hybridgroup/gobot/platforms/gpio/grove_temperature_sensor_driver.go:78 +0x58
Connection to 10.56.239.99 closed.
deadprogram commented 8 years ago

Hi @cweill thanks for this report from Gophercon. Can you please remind me which version of Golang you were using?