Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
終末何してますか? 忙しいですか? KOZOSもデバッグしてもらっていいですか? / Kern...
Search
Toshifumi NISHINAGA
September 23, 2017
Programming
1
350
終末何してますか? 忙しいですか? KOZOSもデバッグしてもらっていいですか? / KernelVm Hokuriku 3-2
2017/09/23に第3回kernelVM北陸で発表した資料です。
KOZOS/RasPiでLuaを動かすためにどういうことがあったかをちょろっと紹介します。
Toshifumi NISHINAGA
September 23, 2017
Tweet
Share
More Decks by Toshifumi NISHINAGA
See All by Toshifumi NISHINAGA
BareMetalで遊ぶRaspberry Pi 5 PCIe編/KernelVM Tokyo17
tnishinaga
0
2k
probe-rsの紹介と最近の貢献紹介/CELF-02-03
tnishinaga
1
420
SecurityCamp2023基板作るコース講義資料/Security Camp 2023 Lecture Materials
tnishinaga
8
2.6k
RP2040のPIOを使う話/KernelVM Hokuriku 6
tnishinaga
3
1.4k
JTAGでArmプロセッサをデバッグする方法のつづき/KernelVM_Tokyo16
tnishinaga
0
460
CMSIS-DAPの概要と使い方/KernelVM Online5
tnishinaga
0
1.8k
JTAGでarmプロセッサをデバッグする話/KernelVM Online4
tnishinaga
4
3.3k
ARM入門/arm introduction
tnishinaga
14
12k
俺の仮想マシンルーターがこんなに遅いはずはない/ KernelVM online 1
tnishinaga
0
2.9k
Other Decks in Programming
See All in Programming
Deoptimization: How YJIT Speeds Up Ruby by Slowing Down / RubyKaigi 2025
k0kubun
0
1.3k
Making TCPSocket.new "Happy"!
coe401_
1
1.9k
KawaiiLT 登壇資料 キャリアとモチベーション
hiiragi
0
150
複雑なフォームの jotai 設計 / Designing jotai(state) for Complex Forms #layerx_frontend
izumin5210
4
1.2k
小田原でみんなで一句詠みたいな #phpcon_odawara
stefafafan
0
350
プロフェッショナルとしての成長「問題の深掘り」が導く真のスキルアップ / issue-analysis-and-skill-up
minodriven
8
1.7k
監視 やばい
syossan27
11
10k
Browser and UI #2 HTML/ARIA
ken7253
2
110
Compose Hot Reload is here, stop re-launching your apps! (Android Makers 2025)
zsmb
1
550
Road to RubyKaigi: Making Tinny Chiptunes with Ruby
makicamel
4
470
SwiftUI API Design Lessons
niw
1
300
Youtube Lofier - Chrome拡張開発
ninikoko
0
2.5k
Featured
See All Featured
How to Ace a Technical Interview
jacobian
276
23k
[RailsConf 2023] Rails as a piece of cake
palkan
54
5.4k
RailsConf 2023
tenderlove
30
1.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.6k
Build your cross-platform service in a week with App Engine
jlugia
230
18k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Side Projects
sachag
453
42k
Docker and Python
trallard
44
3.3k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Fontdeck: Realign not Redesign
paulrobertlloyd
84
5.5k
Transcript
終末何してますか? 忙しいですか? 今度はKOZOSを デバッグしてもらって いいですか? 2017-09-23 KernelVM Hokuriku 3
$ who @tnishinaga
本日の内容 @ykyukinet さんの KOZOS/RasPi で Luaがちゃんと動くようになるまでの おっさん妖精の戦いの物語
2017-09-22 3:00ごろまでの話 • セキュリティキャンプでykyukiさんがKOZOS/RasPiでLuaを動 かせるようにした • しかしLua実行はできるが、実行後にOSが落ちる問題があっ た ◦ https://github.com/ykyuki/kozos-rpi-lua/commit/49cb3475a8d542a6130a9648213a17ae46f568
e3
$ 犯人(たぶん)
$ 犯人(たぶん)
OSが落ちた結果何処に行ってるか • 0x0004eae0という謎アドレスに飛んだ結果 Undefined fault
Undefined faultの詳細 • KOZOSのdispatch関数が謎メモリアドレスをプログラムカウ ンタ(pc)に書き戻す • 飛んだ先でデータを命令として実行しようとしてundefined exceptionが飛んでfault
KOZOSのスレッド生成とスレッドスタック • KOZOSはkz_run関数でスレッドを起動する • kz_run関数はスレッドが使うスタックサイズ上限を引数にとる • KOZOSは引数からスタックサイズ上限を調べてスレッドに割 り当てる thread stack
メモリ thread “cmd” kz_run(command_main, "cmd", 8, 0x200, 0, NULL); 0x200 byte
KOZOSのスレッドスタック配置 • スレッド生成時にスタック領域を0xffffffff方向に伸ばして確保 • 伸ばした先端をスレッドのスタックとして提供 thread stack メモリ thread1 thread2
thread3
KOZOSのスレッドスタックの中身 • 以下が入ってる ◦ プログラムの一時変数など ◦ スレッド切替時は保存されたレジスタ情報等 thread stack register
data char hoge; int i;
KOZOSでStack Overflowが起こるとどうなる • 別のスレッドのスレッド状態等を破壊する • 問題はdispatch時に発火 thread stack register data
char hoge; int i; register data char hoge; int i[]; thread stack register data char hoge; int i; register data char hoge; int i[];
問題の原因 • 一言で言えば Stack Buffer Overflow • スレッドに割り当てるスタックが少なかった • 割当スタックを8KBに増やしたら解決した
戦いの記録 https://github.com/ykyuki/kozos-rpi-lua/commits/master
おわりに 「Luaがエラーを起こすとOSが落ちる」
僕達の戦いはこれからだ!!