--- id: stack-overflow title: "Stack Overflow" category: "Architecture" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["스택 오버플로우", "Stack Overflow Error", "스택 초과", "Call Stack Overflow"] duplicate_of: "" source_trust_level: "A" confidence_score: 0.90 created_at: 2026-07-11 updated_at: 2026-07-11 review_reason: "" merge_history: [] tags: ["research", "context 이해 규칙"] raw_sources: ["JavaScript Execution Context – How JS Works Behind the Scenes - freeCodeCamp"] applied_in: [] github_commit: "" --- # [[Stack Overflow]] ## 🎯 한 줄 통찰 (One-line insight) 스택 오버플로우(Stack Overflow)는 시스템이나 브라우저에 할당된 콜 스택(Call Stack)의 고정된 크기 한도를 초과하여 실행 컨텍스트(Execution Context)가 무한히 적재될 때 발생하는 치명적인 메모리 초과 에러이다. ## 🧠 핵심 개념 (Core concepts) - **콜 스택 (Call Stack):** 자바스크립트 엔진이 전역 및 함수 실행 컨텍스트의 흐름을 추적하기 위해 사용하는 런타임 스택 구조. - **실행 컨텍스트 (Execution Context):** 스크립트 코드의 변환 및 실행을 처리하는 환경으로, 함수 호출 시 스택에 적재되는 단위. - **고정된 스택 크기 (Fixed Stack Size):** 시스템 및 브라우저 환경에 따라 종속적으로 결정되는 콜 스택의 물리적 한계용량. - **기저 조건 없는 재귀 (Recursion without base condition):** 종료 시점 없이 함수가 자신을 계속 호출하여 스택 오버플로우를 유발하는 주된 원인. ## 🧩 추출된 패턴 (Extracted patterns) - **컨텍스트 누적 패턴:** 함수가 호출되면 해당 실행 컨텍스트가 콜 스택 최상단에 푸시(Push)되고 완료 시 팝(Pop)되어야 하나, 특정 이유(예: 무한 재귀)로 완료되지 못하고 계속 푸시만 발생하면 시스템의 한계치에 도달해 에러를 뱉어낸다. ## 📖 세부 내용 (Details) - 자바스크립트 엔진은 전역(Global) 및 함수(Function) 컨텍스트를 포함한 모든 실행 컨텍스트의 궤적을 추적하기 위해 콜 스택(Call Stack)을 사용한다 [S1]. (콜 스택은 'Execution Context Stack', 'Runtime Stack', 'Machine Stack' 등으로도 불린다 [S1].) - 함수가 호출될 때마다 새로운 함수 실행 컨텍스트가 생성되어 콜 스택의 최상단에 푸시(push)되며, 함수 내부의 실행이 모두 완료되면 콜 스택에서 제거(pop)된다 [S1]. - 콜 스택은 실행되는 시스템이나 브라우저에 따라 고유의 고정된 크기(fixed size)를 가진다 [S1]. - 만약 콜 스택에 적재되는 실행 컨텍스트의 수가 이 고정된 제한을 초과하게 되면, '스택 오버플로우(Stack overflow)' 에러가 발생하게 된다 [S1]. - 이러한 스택 초과 현상은 주로 함수 실행이 종료되는 기저 조건(base condition)이 없는 재귀 함수(recursive function)를 실행할 때 발생한다 [S1]. ## ⚖️ 모순 및 업데이트 (Contradictions & updates) 소스 내에서 확인되지 않음. ## 🛠️ 적용 사례 (Applied in summary) 현재 발견된 실제 적용 사례가 없습니다. ## 💻 코드 패턴 (Code patterns) 소스에 코드 예시 없음. ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual - **출처 신뢰도:** A - **신뢰 점수:** 0.90 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 관련 문서 링크 (Related document links) ### 상위/유사 개념 - [[Call Stack]] — 실행 컨텍스트가 쌓이고 관리되는 물리/논리적 자료 구조 공간. - [[Execution Context]] — 콜 스택에 적재되며 스택 오버플로우 에러를 일으키는 실질적인 메모리 객체. - [[Recursion]] — 기저 조건 부재 시 스택 오버플로우를 직접적으로 유발하는 함수 호출 패턴. ### 심층 후속 질문 (Deeper Research Questions) - 브라우저나 운영체제별로 콜 스택의 고정된 크기(Fixed Size)는 구체적으로 어떻게 결정되며 어떤 차이가 있는가? - 스택 오버플로우를 방지하기 위해 꼬리 재귀 최적화(Tail Call Optimization)가 어떻게 실행 컨텍스트 스택의 낭비를 막는가? - 자바스크립트의 비동기 처리(이벤트 루프) 과정은 콜 스택 오버플로우 문제와 어떻게 연관되거나 이를 회피하는가? ### 실무 적용 맥락 (Practical Application Contexts) - **Implementation:** 재귀 함수 구현 시 무한 루프를 방지하기 위한 명확한 기저 조건(base condition) 설계. - **System Design:** 애플리케이션의 Call Stack 한계를 고려한 메모리 안전적 아키텍처 설계. - **Operation / Maintenance:** 런타임 환경에서 발생하는 `Maximum call stack size exceeded` 에러 원인 추적 및 디버깅. - **Learning Path:** 자바스크립트 엔진의 동작 원리(Execution Context, Call Stack) 및 런타임 에러 메커니즘 학습. ### 인접 주변 주제 (Adjacent Topics) - [[Memory Management]] — 런타임 시스템에서의 안정적인 메모리 할당 및 가비지 컬렉션(GC) 구조. - [[Event Loop]] — 콜 스택과 태스크 큐 간의 비동기 실행 제어 메커니즘. ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[context 이해 규칙]] - **관련 개념:** [[Call Stack]], [[Execution Context]] - **참조 맥락:** 실행 컨텍스트의 생명주기와 콜 스택 관리의 물리적 한계를 이해하고 메모리 누수나 무한 재귀 에러를 방지하는 설계 지표로 참조됨. ## 📚 출처 (Sources) - [S1] JavaScript Execution Context – How JS Works Behind the Scenes - freeCodeCamp ## 📝 변경 이력 (Change history) - 2026-07-11: Initial draft generated via Datacollector_MAC P-Reinforce engine.