渋谷ほととぎす通信

完全趣味でやってる技術メモ。※所属団体とは一切関係がありません。

キュベットへプログラム送信時にエラーが出た時の対応


f:id:esakun:20190327011931p:plain:w450

先日我が家にやってきたキュベット君。
キュベットとはイギリス発のプログラミング脳を鍛えるための電子おもちゃです。

キュベットは、そこそこお高いですが、うちの5歳の娘は夢中で遊んでいます。

プリモトイズ キュベット プレイセット 【正規代理店品】

プリモトイズ キュベット プレイセット 【正規代理店品】

キュベットの挙動をカスタマイズする

ちなみに、キュベットの中身はArduinoなので、プログラムを書くことができます。さっそくやってみようということで、こちらの動画を見ながら、やってみました。

しかし、コンパイル時に以下のエラーがでます。

failed MSpanList_Insert 0x30c000 0x2c93f0697180 0x0
fatal error: MSpanList_Insert

runtime stack:
runtime.throw(0x2ac50b)
    /usr/local/go/src/runtime/panic.go:491 +0xad fp=0x7ffeefbff3e0 sp=0x7ffeefbff3b0
runtime.MSpanList_Insert(0x2ca128, 0x30c000)
    /usr/local/go/src/runtime/mheap.c:692 +0x8f fp=0x7ffeefbff408 sp=0x7ffeefbff3e0
MHeap_FreeSpanLocked(0x2c6d20, 0x30c000, 0x100)
    /usr/local/go/src/runtime/mheap.c:583 +0x163 fp=0x7ffeefbff448 sp=0x7ffeefbff408
MHeap_Grow(0x2c6d20, 0x8, 0x0)
    /usr/local/go/src/runtime/mheap.c:420 +0x1a8 fp=0x7ffeefbff488 sp=0x7ffeefbff448
MHeap_AllocSpanLocked(0x2c6d20, 0x1, 0x0)
    /usr/local/go/src/runtime/mheap.c:298 +0x365 fp=0x7ffeefbff4c8 sp=0x7ffeefbff488
mheap_alloc(0x2c6d20, 0x1, 0x12, 0x0)
    /usr/local/go/src/runtime/mheap.c:190 +0x121 fp=0x7ffeefbff4f0 sp=0x7ffeefbff4c8
runtime.MHeap_Alloc(0x2c6d20, 0x1, 0x10000000012, 0xf989)
    /usr/local/go/src/runtime/mheap.c:240 +0x66 fp=0x7ffeefbff528 sp=0x7ffeefbff4f0
MCentral_Grow(0x2cea98, 0x0)
    /usr/local/go/src/runtime/mcentral.c:197 +0x8b fp=0x7ffeefbff590 sp=0x7ffeefbff528
runtime.MCentral_CacheSpan(0x2cea98, 0x0)
    /usr/local/go/src/runtime/mcentral.c:85 +0x167 fp=0x7ffeefbff5c8 sp=0x7ffeefbff590
runtime.MCache_Refill(0x308000, 0x12, 0x0)
    /usr/local/go/src/runtime/mcache.c:90 +0xa0 fp=0x7ffeefbff5f0 sp=0x7ffeefbff5c8
runtime.mcacheRefill_m()
    /usr/local/go/src/runtime/malloc.c:368 +0x57 fp=0x7ffeefbff610 sp=0x7ffeefbff5f0
runtime.onM(0x223ad0)
    /usr/local/go/src/runtime/asm_amd64.s:273 +0x9a fp=0x7ffeefbff618 sp=0x7ffeefbff610
runtime.mallocgc(0x120, 0x1bde40, 0x0, 0x0)
    /usr/local/go/src/runtime/malloc.go:178 +0x849 fp=0x7ffeefbff6c8 sp=0x7ffeefbff618
runtime.newobject(0x1bde40, 0x308000)
    /usr/local/go/src/runtime/malloc.go:353 +0x49 fp=0x7ffeefbff6f0 sp=0x7ffeefbff6c8
runtime.newG(0x276ba)
    /usr/local/go/src/runtime/proc.go:233 +0x2a fp=0x7ffeefbff708 sp=0x7ffeefbff6f0
allocg(0x2b9660)
    /usr/local/go/src/runtime/proc.c:925 +0x1f fp=0x7ffeefbff718 sp=0x7ffeefbff708
runtime.malg(0x8000, 0x2b9700)
    /usr/local/go/src/runtime/proc.c:2106 +0x1f fp=0x7ffeefbff748 sp=0x7ffeefbff718
runtime.mpreinit(0x2b9ac0)
    /usr/local/go/src/runtime/os_darwin.c:137 +0x27 fp=0x7ffeefbff760 sp=0x7ffeefbff748
mcommoninit(0x2b9ac0)
    /usr/local/go/src/runtime/proc.c:201 +0xc9 fp=0x7ffeefbff788 sp=0x7ffeefbff760
runtime.schedinit()
    /usr/local/go/src/runtime/proc.c:138 +0x55 fp=0x7ffeefbff7b0 sp=0x7ffeefbff788
runtime.rt0_go(0x7ffeefbff7e0, 0x19, 0x7ffeefbff7e0, 0x0, 0x19, 0x7ffeefbff9b8, 0x7ffeefbff9f6, 0x7ffeefbffa02, 0x7ffeefbffa12, 0x7ffeefbffa1c, ...)
    /usr/local/go/src/runtime/asm_amd64.s:95 +0x116 fp=0x7ffeefbff7b8 sp=0x7ffeefbff7b0
arduino-builderが2を返しました。

ボードArduino/Genuino Zero (Native USB Port)に対するコンパイル時にエラーが発生しました。

最初Goのバージョンが古いのか?そもそもGoを使用する???など、エラー内容からGoを疑っていましたが真犯人は別にいました。

動画のバージョンではコンパイルエラー

動画の通りArduinoアプリのバージョンを1.6.9、ボードを1.6.6にしていましたが、Arduinoアプリを1.8.9、ボードを1.6.23にした環境で作業していたのですが、それでは僕の環境ではダメだったようです。

f:id:esakun:20190327011317p:plain:w500

2016年末と約1年半前の動画なので、情報がアップデートされていないのかも知れません。とりあえず、動いてよかったです。


以上

動作した環境

  • macOS HighSierra 10.13.6
  • Arduino 1.8.9 (アプリ本体)
  • Arduino AVR Boards 1.6.23 (ボードマネージャで管理されたボード)

送信したプログラム

動画ページにリンクがありますが、こちらのコードをコンパイルしています。