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
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Utilizing Notion as your number one productivity tool
mfonobong
4
420
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
The Limits of Empathy - UXLibs8
cassininazir
1
490
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.4k
How GitHub (no longer) Works
holman
316
150k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
YesSQL, Process and Tooling at Scale
rocio
174
15k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Documentation Writing (for coders)
carmenintech
77
5.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
200
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!