Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
終末何してますか? 忙しいですか? 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.7k
マイコンでもRustのtestがしたい/KernelVM Kansai 11
tnishinaga
1
1.9k
BareMetalで遊ぶRaspberry Pi 5 PCIe編/KernelVM Tokyo17
tnishinaga
2
3.9k
probe-rsの紹介と最近の貢献紹介/CELF-02-03
tnishinaga
1
850
SecurityCamp2023基板作るコース講義資料/Security Camp 2023 Lecture Materials
tnishinaga
8
2.8k
RP2040のPIOを使う話/KernelVM Hokuriku 6
tnishinaga
4
9.1k
JTAGでArmプロセッサをデバッグする方法のつづき/KernelVM_Tokyo16
tnishinaga
0
760
CMSIS-DAPの概要と使い方/KernelVM Online5
tnishinaga
1
2.5k
JTAGでarmプロセッサをデバッグする話/KernelVM Online4
tnishinaga
5
4k
Other Decks in Programming
See All in Programming
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.2k
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
250
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
540
Verilogで学ぶCPU自作入門.pdf
uyuki234
6
3.2k
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
360
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.3k
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
18
15k
速習iPhone Duo対応
yuukiw00w
2
750
Intent as Code
shoppingjaws
6
1.1k
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
160
iOSDC2026登壇資料.pdf
riofujimon
0
180
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Fireside Chat
paigeccino
43
4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
4 Signs Your Business is Dying
shpigford
187
23k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Thoughts on Productivity
jonyablonski
76
5.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
So, you think you're a good person
axbom
PRO
2
2.2k
Optimizing for Happiness
mojombo
378
71k
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が落ちる」
僕達の戦いはこれからだ!!