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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
4k
probe-rsの紹介と最近の貢献紹介/CELF-02-03
tnishinaga
1
880
SecurityCamp2023基板作るコース講義資料/Security Camp 2023 Lecture Materials
tnishinaga
8
2.9k
RP2040のPIOを使う話/KernelVM Hokuriku 6
tnishinaga
4
9.2k
JTAGでArmプロセッサをデバッグする方法のつづき/KernelVM_Tokyo16
tnishinaga
0
770
CMSIS-DAPの概要と使い方/KernelVM Online5
tnishinaga
1
2.5k
JTAGでarmプロセッサをデバッグする話/KernelVM Online4
tnishinaga
5
4.1k
Other Decks in Programming
See All in Programming
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
220
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
150
カツオ、ご期待ください
suneo3476
0
190
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
300
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
340
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
560
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Everyday Curiosity
cassininazir
0
350
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
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が落ちる」
僕達の戦いはこれからだ!!