Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
goroutine で panic すると親プロセスをまきこんで落ちる
Search
uji
February 21, 2021
0
2.1k
goroutine で panic すると親プロセスをまきこんで落ちる
uji
February 21, 2021
Tweet
Share
More Decks by uji
See All by uji
testdata ディレクトリを活用しよう!
uji
0
220
MCP 公式の Go SDK で QA データ登録アシスタントを作ってみた
uji
0
130
Green Tea GCの動作を紙芝居にしてみる
uji
1
120
Go Proverbs の紹介
uji
2
150
Go標準の暗号ライブラリメンテナンス戦略
uji
3
690
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
200
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
250
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
760
標準パッケージ初のgenerics利用事例 "sync/atomic.Pointer"
uji
2
950
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Facilitating Awesome Meetings
lara
57
6.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
A Tale of Four Properties
chriscoyier
162
23k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
720
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
390
The Pragmatic Product Professional
lauravandoore
37
7.1k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Transcript
goroutine で panic すると 親プロセスをまきこんで落ちる uji @uji_rb
panic とは • 回復不能だと判断された実行時のエラーを発生させる機構 • panicが生じるとプロセスが止まる • 組み込み関数のpanicを呼び出すと発生する
panic のハンドリング • panic は defer + recover でハンドリングできる https://play.golang.org/p/sXEcmsxtV_Z
しかし... goroutine で panic が起こった場合 親プロセスからはハンドリングできない
goroutine の panic • goroutine 内で panic のハンドリングがされていないと 親プロセスごと落ちる https://play.golang.org/p/HUY-sN8PK-X
ぶち当たった問題 • api サーバーで goroutine を使った処理が panic が起こすとプロ セスがまるごと落ちてしまう apiサーバー
メインプロセス リクエスト プロセス リクエスト プロセス リクエスト プロセス リクエスト 子プロセス リクエスト 子プロセス
解決策 • goroutine 内ではなるべく panic が 起こらないようにする (error によるハンドリングを徹底)
• goroutine 内で panic の恐れがある場合は recover 処理を忘れない →汎用的につかえる並列処理実行関数をつくった
参考 • プログラミング言語Go完全入門 https://docs.google.com/presentation/d/1HW3wG8J_Q2536Iu__7HGr_mhurHajC7IOGjCnn3kZmg/edit?usp=sharing