旋风少女第二季
한미전략투자공사 전략투자본부장...‘1호 프로젝트’ 앞두고 두달만 사의_我的网站

一 | 김경한 전 본부장 중도하차“공사 내 투자 의견조율 중요” 미국 정부의 대미 투자 이행 압박이 거세지는 가운데 3500억달러 규모의 대미 투자를 총괄하는 한미전략투자공사의 초대 전략투자본부장이 취임 두 달여만에 사임했다.정부가 다음달 중 대미 투자 1호 프로젝트를 발표할 예정인 상황에서 공사의 핵심 투자 책임자가 중도 하차하면서 배경에 관심이 쏠리다.26일 한미전략투자공사 등에 따르면 지난 6월 18일 임명된 김경한(사진) 전 전략투자본부장이 최근 사임했다.행정고시 38회인 김 전 본부장은 공직 입문 후 산업통상부(옛 산업통상자원부)에서 잠시 근무하다 외교부로 자리를 옮겼다. 외교부에서 국제경제국 심의관을 비롯해 주베트남·브라질·미국 시카고·인도 참사관 등을 지내며 국제경제와 통상 분야에서 경력을 쌓았다.이후 포스코로 이직해 포스코홀딩스 글로벌통상정책 부사장, 커뮤니케이션본부 부사장, 무역통상실장 등을 역임했다. 한미전략투자공사 출범 이후에는 외교부 몫으로 전략투자본부장에 임명됐다.전략투자본부장은 사실상 공사의 최고투자책임자(CIO)에 해당한다. 배터리·원전·조선·방산·인공지능(AI) 인프라·핵심광물 등 전략산업 분야에서 미국 내 투자처를 발굴하고, 미국 측 파트너와 협상하면서 국내 기업의 참여 구조를 설계하는 업무를 맡는다. 한미 간 전략투자 프로젝트를 발굴·구조화하고 정부 정책 목표와 재무적 타당성을 동시에 맞춰야 하는 중책인 셈이다.공사의 또 다른 핵심 축인 경영기획본부장에는 재정경제부(옛 기획재정부) 몫으로 강종석 전 기획재정부 경제안보공급망기획단 부단장이 임명됐다. 경영기획본부장은 공사의 경영기획 전반을 총괄한다.공사의 핵심 인사가 교체되는 가운데 정부는 다음달 대미 투자 1호 프로젝트를 최종 확정할 계획이다. 산업부는 다음달 중순께 첫 프로젝트를 발표한다는 방침이다. 앞서 김정관 산업부 장관은 지난 20일 취재진을 만나 “현실적으로 필요한 과정과 절차를 고려해 9월 중으로 발표하자는 데 양국 간에 이해가 있었다”며 “다음주도 미국 측과 화상 회의를 이어갈 것”이라고 설명했다.‘대한민국과 미합중국 간 전략적투자의 운영 및 관리를 위한 특별법’에 따르면 대미 투자 프로젝트는 먼저 산업부 산하 한미전략투자 사업관리위원회에서 상업성 등을 검증한다. 이후 한미전략투자공사 산하 운영위원회가 프로젝트를 검토하고, 마지막으로 국회 소관 상임위원회에 관련 내용을 공식 보고해야 투자를 확정할 수 있다.정부 한 관계자는 “행시 40회인 산업부 출신 박종원 사장과 대부분 외교부에서 근무한 행시 38회 본부장간 의견 차이가 있었을 가능성도 있다”면서 “공사가 산업부·외교부·재경부 등 여러 부처의 이해관계가 반영되는 구조인 만큼 투자 방향과 우선순위를 둘러싼 조율이 중요할 것”이라고 말했다.배문숙 기자。 作者 | Steef-Jan Wiggers 译者 | 平川 OpenAI 的工程师们花了数周时间,试图解释 Rockset 中那些神秘的崩溃问题。Rockset 是一款 C++ 数据基础设施服务,为 ChatGPT 的搜索和数据插件提供支持。

二 | 函数似乎会返回错误的内存地址,栈指针在执行过程中似乎会偏移 8 个字节。团队提出的每一种假设都面临着有力的反证。这个 Bug 似乎根本不可能存在。 他们原本以为是一个 Bug ,结果却发现是两个互不相关的 Bug ,它们只是很巧合地在同一时间被发现了。

三 | 这一突破性发现并非来自对单个崩溃事件的深入排查,而是源于转向了他们所说的“流行病学调试”:构建一条管道,自动分析过去一年中生产环境的每一个核心转储文件,然后寻找整体规律,而不是对单个案例进行推断。 该团队让 ChatGPT 编写了一个脚本,用于下载每个核心文件的开头部分,提取寄存器数据,过滤已知的误报,并将每次崩溃标记为“返回空指针”、“栈对齐错误”或其他类型。他们将该脚本并行应用于过去一年中的所有 Rockset 核心转储文件。

四 | 他们很快就发现了相关性。原本从症状上看属于同类的问题,实际上对应两组特征完全不同的崩溃事件。

五 | 这些因栈对齐错误导致的崩溃均源自同一个 Azure 区域,有明确的起始日期,而且从未出现在长期运行的节点上。团队追踪发现,这些崩溃源自一台物理主机,其 CPU 正在悄无声息地产生错误的结果。它既没有过热,也没有抛出机器检查异常,而只是数学运算默默出了错。将该主机从服务中移除后,因栈对齐错误导致的崩溃便完全消失了。 在剔除硬件崩溃问题后,剩余的由“返回空指针”导致的崩溃问题便变得可控了。此前,团队曾排除了 C++ 异常展开的原因,因为他们认为自己找到了反例:在未使用异常的代码路径中发生了崩溃。但这些反例全都来自有硬件损坏的故障集群。一旦剔除了这些干扰因素,剩余的所有崩溃便都是发生在异常展开过程中了。 问题发生的根本原因是 GNU libunwind 的 _Ux86_64_setcontext 函数中有一个已经存在 18 年的竞争条件。

六 | 在 C++ 异常展开过程中,libunwind 会在栈上合成一个 ucontext_t 结构体,填充所需的寄存器状态,然后调用 _Ux86_64_setcontext 将控制权转移给清理处理程序。

七 | 问题在于:_Ux86_64_setcontext 在从旧结构体中读取指令指针的操作尚未完成之前,就将栈指针(%rsp)更新为指向新的栈帧。

八 | 一旦 %rsp 发生变化,该结构体便不再属于活动栈的一部分,也不再受内核红区的保护。如果信号恰好在 %rsp 更新与 %rip 读取之间的这一时间窗口内到达,内核就会在该结构体之上构建其信号帧,指令指针遭到破坏,函数便会跳转到 NULL 或垃圾地址。 竞争窗口的宽度正好为一条指令。

九 | 以现代处理器的时钟频率计算,这大约相当于 100 皮秒。在大多数程序中,这种情况根本不会被触发。

十 | OpenAI 的 Rockset 使用了 timer_create 函数,每隔几毫秒的 CPU 时间就发送一次 SIGUSR2 信号,为的是实现轻量级的按查询记账,这样产生的信号发送事件远多于传统的应用程序。

十一 | 正是这种高频的信号发送,将只在理论上可能发生的竞争状况转化成了实际生产环境中的崩溃。

十二 | 该团队将一个修复方案和一个自包含的重现示例提交到了 GNU libunwind,并通过验证证实,其他展开器(如 libgcc)不存在这个问题。该修复方案通过重新排序指令,确保在更新 %rsp 之前先读取 %rip,从而彻底消除了这个时间窗口。 该团队对这一教训的总结值得全文引用: 最重要的步骤并非巧妙地解读汇编代码,也不是对细节的深入了解,而是构建一个高质量的数据集。如果没有这个数据集,我们就会把两种截然不同的现象混为一谈,并试图通过推理来理清这种混乱。一旦获得了准确且完整的全量数据,问题的结构便显而易见了。 如果你的团队正在排查难以解释的生产环境崩溃问题,请检查你们是否将多个 Bug 混为一谈。那些看似与所有假设都不相符的症状,实际上可能并不矛盾;它们可能与两个不同的假设相符,而你却无意中将它们混淆了。洞察问题结构的最快途径,并非对单个案例进行更深入的分析,而是获取涵盖所有故障案例的完整、带标签的数据。 这篇完整的工程技术博文包含了详细的栈内存示意图、存在漏洞的汇编指令,以及揭示出两种不同类型故障的崩溃率可视化图表。 https://www.infoq.com/news/2026/07/openai-libunwind-core-dumps/ 声明:本文由 InfoQ 翻译,未经许可禁止转载。

十三 |
Current article:http://www.zangjiwuqihuncongcherua.cyou/zg9/20260826/63420.docx
Published on:12:52:30



























