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
Do Gophers Dream of Stack Overflow?
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Takuto Nagami
May 22, 2026
47
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Do Gophers Dream of Stack Overflow?
2026/5/22 Slides for the presentation at GopherCon Singapore.
Takuto Nagami
May 22, 2026
More Decks by Takuto Nagami
See All by Takuto Nagami
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
9
1.3k
キャリア科目では教えてくれない、就活を生き抜く法則
logica0419
2
300
歴史から学ぶ、Goのメモリ管理基礎
logica0419
17
4.1k
【2025改訂版】ITエンジニアとして知っておいてほしい、電子メールという大きな穴
logica0419
2
310
Fundamentals of Memory Management in Go: Learning Through the History
logica0419
1
170
GopherCon Tourのつくりかた
logica0419
2
160
Go言語はstack overflowの夢を見るか?
logica0419
2
880
あなたの言葉に力を与える、演繹的なアプローチ
logica0419
1
310
GC25 Recap+: Advancing Go Garbage Collection with Green Tea
logica0419
3
1.1k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Building AI with AI
inesmontani
PRO
1
1.1k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
470
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
220
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
390
WCS-LA-2024
lcolladotor
0
710
A Modern Web Designer's Workflow
chriscoyier
698
190k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
360
Transcript
Takuto Nagami @logica0419 Do Gophers Dream of Stack Overflow?
Ever heard of stack overflow?
Ever heard of stack overflow? No this one today!
Stack memory (and heap memory)
RAM from the application perspective . . . • Key-value
store ◦ Key: Memory address ◦ Value: 1 byte for each addr • Most of high-level language (including Go) divides this store into two areas: Stack and Heap 0x0000 0x0001 0x0002 0x0003
. . . Stack memory area
. . . main() stack frame Stack memory area
. . . main() stack frame 5 Stack memory area
{v addr}
. . . main() stack frame 5 a() stack frame
Stack memory area {v addr}
. . . main() stack frame 5 a() stack frame
5 Stack memory area {arg addr} {v addr}
. . . main() stack frame 5 a() stack frame
5 7 Stack memory area {arg addr} {a addr} {v addr}
. . Stack memory area main() stack frame 5 a()
stack frame {arg addr} {a addr} {v addr} 5 7 b() stack frame
. . Stack memory area main() stack frame 5 a()
stack frame {arg addr} {arg addr} {a addr} {v addr} 5 7 b() stack frame 7
. . Stack memory area main() stack frame 5 a()
stack frame {arg addr} {b addr} {arg addr} {a addr} {v addr} 5 7 b() stack frame 7 1
. . . Stack memory area main() stack frame 5
a() stack frame {arg addr} {a addr} {v addr} 5 7
. . . Stack memory area main() stack frame 5
{v addr}
. . . Stack memory area Program exits
Stack is not a silver bullet... • Can’t handle unknown
data size (maps/slices) ◦ Stack allocation is compiler’s duty • Sometimes can’t share variables between functions → These go to heap memory area
Stack overflow (primary meaning)
Stack overflow • Language decides border between heap and stack
◦ e.g., in C on Linux, stack size is 8MB . . . . . Heap var main() stack frame
Stack overflow • Going over the stack limit with nested
function
Stack overflow • Going over the stack limit with nested
function → Stack overflow!!
Flexible stack 【Go specific】
Go has flexible stack • Stack for each goroutine •
Each stack grows and shrinks on demand ◦ Initialized with 4kB
Rough idea main goroutine main() stack frame a() stack frame
a2() stack frame a3() stack frame a4() stack frame m2() stack frame b() stack frame a goroutine b goroutine
Can Go still cause a stack overflow despite having a
flexible stack?
Flexible stack → No stack overflow?
No stack overflow? Stack overflow still exists in Go!
Because: Each goroutine has a stack size limit It’s defined
in the “runtime” package
Maximum stack size • Set to 1MiB on startup ◦
runtime/stack.go
Maximum stack size • Final size is defined when main
goroutine starts ◦ runtime/proc.go ◦ 250MB for 32bit, 1GB for 64bit
Let’s see an actual stack overflow! • Go says “fatal
error: stack overflow” ◦ 6 million+ functions were nested
Modifying the max size • Override with runtime/debug.SetMaxStack()
Modifying the max size • The same experiment with 8
MB of stack size ◦ Nested functions: 6 million -> 52,000
Wrapup Go’s stack does overflow
Thank you! Let’s have a nice conference!