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
370
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
終末何してますか? 忙しいですか? KOZOSもデバッグしてもらっていいですか? / KernelVm Hokuriku 3-2
2017/09/23に第3回kernelVM北陸で発表した資料です。
KOZOS/RasPiでLuaを動かすためにどういうことがあったかをちょろっと紹介します。
Toshifumi NISHINAGA
September 23, 2017
More Decks by Toshifumi NISHINAGA
See All by Toshifumi NISHINAGA
マイコンでもRustのtestがしたい その2/KernelVM Tokyo 18
tnishinaga
2
2.6k
マイコンでもRustのtestがしたい/KernelVM Kansai 11
tnishinaga
1
1.8k
BareMetalで遊ぶRaspberry Pi 5 PCIe編/KernelVM Tokyo17
tnishinaga
1
3.8k
probe-rsの紹介と最近の貢献紹介/CELF-02-03
tnishinaga
1
800
SecurityCamp2023基板作るコース講義資料/Security Camp 2023 Lecture Materials
tnishinaga
8
2.8k
RP2040のPIOを使う話/KernelVM Hokuriku 6
tnishinaga
4
8.1k
JTAGでArmプロセッサをデバッグする方法のつづき/KernelVM_Tokyo16
tnishinaga
0
710
CMSIS-DAPの概要と使い方/KernelVM Online5
tnishinaga
1
2.4k
JTAGでarmプロセッサをデバッグする話/KernelVM Online4
tnishinaga
5
4k
Other Decks in Programming
See All in Programming
継続モナドとリアクティブプログラミング
yukikurage
3
400
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
240
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
自作OSでスライド発表する
uyuki234
1
3.7k
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
160
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
380
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
140
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
130
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
250
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
200
symfony/aiとlaravel/boost
77web
0
120
Webフレームワークの ベンチマークについて
yusukebe
0
200
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
380
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
500
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
HDC tutorial
michielstock
2
730
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Six Lessons from altMBA
skipperchong
29
4.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
It's Worth the Effort
3n
188
29k
Believing is Seeing
oripsolob
1
160
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が落ちる」
僕達の戦いはこれからだ!!