Skip to content

Add bufferflow timedraw #30

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

Merged
merged 2 commits into from
Mar 3, 2016
Merged

Add bufferflow timedraw #30

merged 2 commits into from
Mar 3, 2016

Conversation

facchinm
Copy link
Member

encodes data in base64 so it needs to be decoded on the other side
solves #29

@facchinm
Copy link
Member Author

/cc @mbriden

@matteosuppo
Copy link
Contributor

Hello, I tried the following commands with a Leonardo:

list
open /dev/ttyACM0 9600 timedraw
sendjsonraw {"P": "/dev/ttyACM0"}

and it crashed with:

INFO[0044] spWriteJson. arg:sendjsonraw {"P": "/dev/ttyACM0"}

panic: runtime error: index out of range

goroutine 209 [running]:
main.spWriteJsonRaw(0xc208de7320, 0x16)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serial.go:683 +0x769
created by main.checkCmd
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/hub.go:176 +0x89c

goroutine 1 [syscall, locked to thread]:
github.com/facchinm/systray._Cfunc_nativeLoop(0x0)
    github.com/facchinm/systray/_obj/_cgo_gotypes.go:42 +0x4b
github.com/facchinm/systray.nativeLoop()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/facchinm/systray/systray_nonwindows.go:19 +0x1f
github.com/facchinm/systray.Run(0xb7a038)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/facchinm/systray/systray.go:56 +0x98
main.setupSysTray()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/trayicon.go:47 +0x5a
main.main()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/main.go:290 +0x6e

goroutine 5 [syscall]:
os/signal.loop()
    /opt/go/src/os/signal/signal_unix.go:21 +0x1f
created by os/signal.init·1
    /opt/go/src/os/signal/signal_unix.go:27 +0x35

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
    /opt/go/src/runtime/asm_amd64.s:2232 +0x1

goroutine 9 [chan receive]:
github.com/vharitonsky/iniflags.sighupHandler(0xc20805a5a0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/vharitonsky/iniflags/iniflags.go:140 +0x5a
created by github.com/vharitonsky/iniflags.Parse
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/vharitonsky/iniflags/iniflags.go:68 +0x291

goroutine 27 [sleep]:
main.func·023()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serial.go:459 +0x39
created by main.discoverLoop
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serial.go:461 +0xfc

goroutine 11 [select]:
github.com/carlescere/scheduler.func·001(0xc20805a600)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/carlescere/scheduler/scheduler.go:176 +0x1a7
created by github.com/carlescere/scheduler.(*Job).Run
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/carlescere/scheduler/scheduler.go:186 +0x1ec

goroutine 39 [chan receive]:
main.func·028()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/trayicon.go:75 +0x4a
created by main.setupSysTrayReal
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/trayicon.go:84 +0x252

goroutine 24 [chan receive]:
github.com/googollee/go-socket%2eio.(*Server).loop(0xc208137560)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/googollee/go-socket.io/server.go:97 +0x82
created by github.com/googollee/go-socket%2eio.NewServer
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/googollee/go-socket.io/server.go:26 +0x1b5

goroutine 22 [select]:
main.(*serialhub).run(0xf54c60)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serial.go:137 +0x9e4
created by main.func·018
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/main.go:213 +0x15c6

goroutine 21 [select]:
main.(*hub).run(0xf54be0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/hub.go:53 +0x80d
created by main.func·018
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/main.go:211 +0x15aa

goroutine 25 [IO wait]:
net.(*pollDesc).Wait(0xc2080aa8b0, 0x72, 0x0, 0x0)
    /opt/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080aa8b0, 0x0, 0x0)
    /opt/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc2080aa850, 0x0, 0x7f74ad17edf0, 0xc208088f40)
    /opt/go/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc20802e040, 0x0, 0x0, 0x0)
    /opt/go/src/net/tcpsock_posix.go:234 +0x4e
net/http.tcpKeepAliveListener.Accept(0xc20802e040, 0x0, 0x0, 0x0, 0x0)
    /opt/go/src/net/http/server.go:1976 +0x4c
crypto/tls.(*listener).Accept(0xc208121b00, 0x0, 0x0, 0x0, 0x0)
    /opt/go/src/crypto/tls/tls.go:46 +0x6b
net/http.(*Server).Serve(0xc2080f4780, 0x7f74ad186c90, 0xc208121b00, 0x0, 0x0)
    /opt/go/src/net/http/server.go:1728 +0x92
net/http.(*Server).ListenAndServeTLS(0xc2080f4780, 0xc20813ac30, 0x2b, 0xc20813ac90, 0x2a, 0x0, 0x0)
    /opt/go/src/net/http/server.go:1879 +0x55b
net/http.ListenAndServeTLS(0xc208089024, 0x5, 0xc20813ac30, 0x2b, 0xc20813ac90, 0x2a, 0x7f74ad17ff08, 0xc20808c1c0, 0x0, 0x0)
    /opt/go/src/net/http/server.go:1841 +0xef
github.com/gin-gonic/gin.(*Engine).RunTLS(0xc20808c1c0, 0xc208089024, 0x5, 0xc20813ac30, 0x2b, 0xc20813ac90, 0x2a, 0x0, 0x0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/gin-gonic/gin/gin.go:247 +0x21b
main.func·016()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/main.go:259 +0x367
created by main.func·018
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/main.go:268 +0x2009

goroutine 26 [IO wait]:
net.(*pollDesc).Wait(0xc2080f00d0, 0x72, 0x0, 0x0)
    /opt/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080f00d0, 0x0, 0x0)
    /opt/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc2080f0070, 0x0, 0x7f74ad17edf0, 0xc208160360)
    /opt/go/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc20802e030, 0x585d0e, 0x0, 0x0)
    /opt/go/src/net/tcpsock_posix.go:234 +0x4e
net/http.tcpKeepAliveListener.Accept(0xc20802e030, 0x0, 0x0, 0x0, 0x0)
    /opt/go/src/net/http/server.go:1976 +0x4c
net/http.(*Server).Serve(0xc20805a1e0, 0x7f74ad1820e8, 0xc20802e030, 0x0, 0x0)
    /opt/go/src/net/http/server.go:1728 +0x92
net/http.(*Server).ListenAndServe(0xc20805a1e0, 0x0, 0x0)
    /opt/go/src/net/http/server.go:1718 +0x154
net/http.ListenAndServe(0xc20800aad4, 0x5, 0x7f74ad17ff08, 0xc20808c1c0, 0x0, 0x0)
    /opt/go/src/net/http/server.go:1808 +0xba
github.com/gin-gonic/gin.(*Engine).Run(0xc20808c1c0, 0xc208102f88, 0x1, 0x1, 0x0, 0x0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/gin-gonic/gin/gin.go:236 +0x206
main.func·017()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/main.go:277 +0x167
created by main.func·018
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/main.go:286 +0x2074

goroutine 28 [sleep]:
main.func·024()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serial.go:465 +0x30
created by main.discoverLoop
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serial.go:467 +0x10d

goroutine 49 [chan receive]:
github.com/googollee/go-engine%2eio.(*serverConn).NextReader(0xc2080316c0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/googollee/go-engine.io/server_conn.go:127 +0xc3
github.com/googollee/go-socket%2eio.(*decoder).Decode(0xc208d9f4c0, 0xc208d9f500, 0x0, 0x0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/googollee/go-socket.io/parser.go:169 +0x70
github.com/googollee/go-socket%2eio.(*socket).loop(0xc20813bb00, 0x0, 0x0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/googollee/go-socket.io/socket.go:132 +0x315
github.com/googollee/go-socket%2eio.func·003(0xc20813bb00)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/googollee/go-socket.io/server.go:103 +0x28
created by github.com/googollee/go-socket%2eio.(*Server).loop
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/googollee/go-socket.io/server.go:104 +0x109

goroutine 52 [IO wait]:
net.(*pollDesc).Wait(0xc208086220, 0x72, 0x0, 0x0)
    /opt/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208086220, 0x0, 0x0)
    /opt/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080861c0, 0xc208162000, 0x2800, 0x2800, 0x0, 0x7f74ad17edf0, 0xc208db3d58)
    /opt/go/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc20802e0d0, 0xc208162000, 0x2800, 0x2800, 0x0, 0x0, 0x0)
    /opt/go/src/net/net.go:121 +0xdc
bufio.(*Reader).fill(0xc208140120)
    /opt/go/src/bufio/bufio.go:97 +0x1ce
bufio.(*Reader).Read(0xc208140120, 0xc208db3d50, 0x2, 0x8, 0xc20807aa80, 0x0, 0x0)
    /opt/go/src/bufio/bufio.go:174 +0x26c
github.com/gorilla/websocket.(*Conn).readFull(0xc2080f8000, 0xc208db3d50, 0x2, 0x8, 0x0, 0x0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/gorilla/websocket/conn.go:542 +0xab
github.com/gorilla/websocket.(*Conn).advanceFrame(0xc2080f8000, 0x0, 0x0, 0x0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/gorilla/websocket/conn.go:566 +0x15c
github.com/gorilla/websocket.(*Conn).NextReader(0xc2080f8000, 0x0, 0x0, 0x0, 0x0, 0x0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/gorilla/websocket/conn.go:706 +0x7e
github.com/googollee/go-engine.io/websocket.(*Server).serveHTTP(0xc2081367a0, 0x7f74ad1870f0, 0xc2080b4580, 0xc2080304e0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/googollee/go-engine.io/websocket/server.go:63 +0xbd
created by github.com/googollee/go-engine.io/websocket.NewServer
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/googollee/go-engine.io/websocket/server.go:29 +0x18f

goroutine 48 [select]:
github.com/googollee/go-engine%2eio.(*serverConn).pingLoop(0xc2080316c0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/googollee/go-engine.io/server_conn.go:359 +0x46f
created by github.com/googollee/go-engine%2eio.newServerConn
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/googollee/go-engine.io/server_conn.go:110 +0x50e

goroutine 47 [IO wait]:
net.(*pollDesc).Wait(0xc208087870, 0x72, 0x0, 0x0)
    /opt/go/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208087870, 0x0, 0x0)
    /opt/go/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208087810, 0xc2080d9000, 0x1000, 0x1000, 0x0, 0x7f74ad17edf0, 0xc208160598)
    /opt/go/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc20802e5b0, 0xc2080d9000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /opt/go/src/net/net.go:121 +0xdc
net/http.(*liveSwitchReader).Read(0xc2080ddda8, 0xc2080d9000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /opt/go/src/net/http/server.go:214 +0xab
io.(*LimitedReader).Read(0xc208137140, 0xc2080d9000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
    /opt/go/src/io/io.go:408 +0xce
bufio.(*Reader).fill(0xc208140d80)
    /opt/go/src/bufio/bufio.go:97 +0x1ce
bufio.(*Reader).ReadSlice(0xc208140d80, 0xc20814020a, 0x0, 0x0, 0x0, 0x0, 0x0)
    /opt/go/src/bufio/bufio.go:295 +0x257
bufio.(*Reader).ReadLine(0xc208140d80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /opt/go/src/bufio/bufio.go:324 +0x62
net/textproto.(*Reader).readLineSlice(0xc20813a2a0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /opt/go/src/net/textproto/reader.go:55 +0x9e
net/textproto.(*Reader).ReadLine(0xc20813a2a0, 0x0, 0x0, 0x0, 0x0)
    /opt/go/src/net/textproto/reader.go:36 +0x4f
net/http.ReadRequest(0xc208140d80, 0xc208031380, 0x0, 0x0)
    /opt/go/src/net/http/request.go:598 +0xcb
net/http.(*conn).readRequest(0xc2080ddd60, 0x0, 0x0, 0x0)
    /opt/go/src/net/http/server.go:586 +0x26f
net/http.(*conn).serve(0xc2080ddd60)
    /opt/go/src/net/http/server.go:1162 +0x69e
created by net/http.(*Server).Serve
    /opt/go/src/net/http/server.go:1751 +0x35e

goroutine 50 [runnable]:
main.(*connection).writer(0xc208136000)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/conn.go:23 +0x7e
created by main.func·007
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/conn.go:107 +0x227

goroutine 40 [chan receive]:
main.func·029()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/trayicon.go:94 +0x4c
created by main.setupSysTrayReal
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/trayicon.go:98 +0x2a8

goroutine 41 [chan receive]:
main.func·030()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/trayicon.go:103 +0x4c
created by main.setupSysTrayReal
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/trayicon.go:106 +0x2fa

goroutine 95 [chan receive]:
main.func·004()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/bufferflow_timedraw.go:33 +0xbb
created by main.(*BufferflowTimedRaw).Init
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/bufferflow_timedraw.go:43 +0x1a5

goroutine 96 [chan receive]:
main.(*serport).writerBuffered(0xc2080ce000)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serialport.go:213 +0x86
created by main.spHandlerOpen
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serialport.go:364 +0xd84

goroutine 94 [chan receive]:
main.func·003()
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/bufferflow_timedraw.go:26 +0x68
created by main.(*BufferflowTimedRaw).Init
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/bufferflow_timedraw.go:29 +0x153

goroutine 93 [syscall]:
syscall.Syscall(0x0, 0x11, 0xc20804c800, 0x400, 0x49550f, 0xece4406a0, 0x7f74164595ee)
    /opt/go/src/syscall/asm_linux_amd64.s:21 +0x5
syscall.read(0x11, 0xc20804c800, 0x400, 0x400, 0x5f5de2e, 0x0, 0x0)
    /opt/go/src/syscall/zsyscall_linux_amd64.go:867 +0x6e
syscall.Read(0x11, 0xc20804c800, 0x400, 0x400, 0x495ad9, 0x0, 0x0)
    /opt/go/src/syscall/syscall_unix.go:136 +0x58
github.com/facchinm/go-serial.(*SerialPort).Read(0xc208161fd8, 0xc20804c800, 0x400, 0x400, 0x0, 0x0, 0x0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/src/github.com/facchinm/go-serial/serial_unix.go:34 +0x5b
main.(*serport).reader(0xc2080ce000)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serialport.go:104 +0xf2
main.spHandlerOpen(0xc208243a65, 0xc, 0x2580, 0xc208243a77, 0x8, 0x0)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serialport.go:367 +0xdae
created by main.checkCmd
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/hub.go:159 +0x598

goroutine 97 [chan receive]:
main.(*serport).writerNoBuf(0xc2080ce000)
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serialport.go:242 +0x6c
created by main.spHandlerOpen
    /home/jenkins/jenkins/jobs/Create_Bridge_PR_builder_test/workspace/serialport.go:366 +0xd9e

@facchinm
Copy link
Member Author

facchinm commented Feb 3, 2016

The sendjsonraw command needs a syntax like

sendjsonraw { "P": "/dev/ttyACM0", "Data": [ { "D": "Zg==" } ] }

as reported on the comments of 4ff28bb
Anyway, a check surely needs to be added 😄

@matteosuppo
Copy link
Contributor

For some reasons it disconnects whenever I try an upload with Create. Could you rebase it on the current devel? Maybe it's something we changed in the meantime.

encodes data in base64 so it needs to be decoded on the other side
usage:
sendjsonraw { "P": "/dev/ttyACM0", "Data": [ { "D": "Zg==" } ] }

D field contains base64 encoded data
@ArduinoBot
Copy link

✅ Build completed.

Download at http://downloads.arduino.cc/CreateBridge/CreateBridge-PR70.zip

matteosuppo added a commit that referenced this pull request Mar 3, 2016
@matteosuppo matteosuppo merged commit 7c55c5e into arduino:devel Mar 3, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants