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
Do Gophers Dream of Stack Overflow?
Search
Takuto Nagami
May 22, 2026
66
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Do Gophers Dream of Stack Overflow?
May 22, 2026: Slides for the presentation at GopherCon Singapore.
Takuto Nagami
May 22, 2026
More Decks by Takuto Nagami
See All by Takuto Nagami
GopherCon @シアトル に行ってきました
logica0419
0
610
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
670
The Journey of Connecting Japan to the Global Go Community
logica0419
1
140
Discovering Cilium: What eBPF Enabled in K8s Networking
logica0419
0
130
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
10
1.7k
キャリア科目では教えてくれない、就活を生き抜く法則
logica0419
2
320
歴史から学ぶ、Goのメモリ管理基礎
logica0419
17
4.7k
【2025改訂版】ITエンジニアとして知っておいてほしい、電子メールという大きな穴
logica0419
2
440
Fundamentals of Memory Management in Go: Learning Through the History
logica0419
1
200
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
Technical Leadership for Architectural Decision Making
baasie
3
590
Fireside Chat
paigeccino
43
4.1k
How to make the Groovebox
asonas
2
2.5k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
550
Done Done
chrislema
187
17k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
970
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
260
Facilitating Awesome Meetings
lara
57
7.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
550
Marketing to machines
jonoalderson
1
5.9k
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!