Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
  • Product Hunt
  • Visual Capitalist
  • Elon Musk
Menu

破坏核心转储的寄生 RPC 服务

Posted on 2022-03-11

我已经讲过一个故事,关于如何通过将 Linux 内核指向自定义核心转储处理程序然后让该处理程序无法运行来对机器进行软管处理。这会堵塞管道(真的),然后其他所有东西都会堆积在它后面。很快,每个崩溃的进程都会被卡住。

我从那个故事中遗漏的是它是如何走到那一步的。

曾几何时,在一个大公司环境中,有人决定他们想为在同一个 Linux 机器上运行的其他事物提供服务。但是,他们没有编写将通过发布过程和所有这些好东西的 Yet Another Service ™,而是完全采用了不同的设计。

是的,这项服务存在于 *client* 程序中。每次使用通常的 corp RPC 传输构建的程序启动时,它都会尝试绑定到某个 TCP 端口。如果它成功了,它会说“好吧,我想我是赢家”,然后继续在那个端口上启动这个服务。否则,想法是它会连接到该端口并与首先到达那里的人交谈。

这有很多问题。你有一个“服务器”的问题,它凭空出现,这取决于谁或什么首先在机器上启动。它占用了 CPU 时间和内存,这些时间和内存被“充电”回“获胜”的进程,而不是成为它自己的东西,它会追溯到最初写这个东西的人。

想象一下,如果每天早上在一定时间后驶上高速公路的第一辆车必须跟着每个人到他们的办公室并为他们煮咖啡。这就是我所说的那种随机、完全荒谬且难以解决的问题。

更好的是,显然他们所做的这件事是有问题的。随着故事的发展,它启动了线程来做这些事情,并且它设法拥有一些循环引用,这样它就永远不会获得 0 的引用计数,因此它永远不会真正消失。更好的是,试图抢占端口的东西有无限超时,所以它会永远尝试。它实际上从未失败过,因此它从未放弃和关闭。

这意味着在树中某个提交之后构建的每个程序都有这个错误功能,并且无法自行干净地关闭。你必须用足够强的信号朝它的头部射击才能让它消失。

现在,考虑到基本上所有东西最终都使用了这个库,想象一下当核心转储帮助程序获得它时会发生什么。它也卡住了,然后无法关闭。这意味着当盒子上的某些东西崩溃时,内核永远无法完成其核心转储序列。然后支持了它背后的一切。

基本上,这个错误一直在破坏其他程序,但是当它到达核心转储帮助程序时,它变得非常糟糕。正是这种可见性让足够多的人来解决这个问题,并最终将其永久关闭。

我自己对这类事情的启发是,除了一个线程之外,每个线程都在 exit() 中,最后一个线程在内核深处的某个 pipe_* 函数中……并且可能在 do_coredump 或过去的几个堆栈帧中相似的。

如果它发生在你身上,希望你能记住这一点。

来源: http://rachelbythebay.com/w/2022/03/08/core/

发表回复 取消回复

要发表评论,您必须先登录。

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Articles on Jose M. (2)
  • Balaji S. Srinivasan (1)
  • Blogs on Dev.Poga (1)
  • Bob Nystrom (1)
  • Dan Wang (1)
  • dostoynikov (4)
  • Joel on Software (1)
  • John Resig (1)
  • Laurence Gellert's Blog (1)
  • Matt Might's blog (4)
  • Michael Feathers (1)
  • News Letter (206)
  • Noahpinion (11)
  • Philip Walton (1)
  • Pivotal (1)
  • Rohit Kumar (1)
  • Sam Julien (1)
  • Scott Hanselman's Blog (2)
  • ShinChven (3)
  • Tom's blog (2)
  • Wait But Why (2)
  • 湾区日报 (22)
  • 英文媒体 (40,694)
    • Ars Technica (2,827)
    • Daily Infographic (338)
    • Engadget (6,220)
    • Enonomist (77)
    • FlowingData (280)
    • Hacker News (773)
    • Hacker News Daily (353)
    • Hacker Noon (125)
    • Harvard Health (155)
    • KK – Cool Tools (245)
    • KK – Recomendo (279)
    • Make Use Of (158)
    • NASA Astronomy Picture (311)
    • Product Hunt (8,609)
    • Psyche (236)
    • Quanta Magazine (202)
    • Science current issue (668)
    • Sidebar (1,165)
    • Singularity HUB (307)
    • TechCrunch (9,929)
    • The Practical Developer (99)
    • The Verge (6,913)
    • Visual Capitalist (425)
  • 英文推特 (17,685)
    • Bill Gates (342)
    • Brett Winton (1,333)
    • Cathie Wood (303)
    • Durov's Channel (25)
    • Elon Musk (5,422)
    • GeekWire (2,868)
    • Hunter Walk (57)
    • Mark Gurman (1,061)
    • Naval (699)
    • Parag Agrawal (52)
    • Ray Dalio (1,045)
    • Riccardo Mori (16)
    • Steph Smith (2,269)
    • Tim Cook (169)
    • Vitalik Buterin (2,024)
  • 英文独立博客 (4,262)
    • A learning a day (355)
    • A Smart Bear (2)
    • AddyOsmani.com (11)
    • Adwyat Krishna (30)
    • Ahmad Shadeed (2)
    • Alex Turek (3)
    • All Poetry (1)
    • All That is Solid (51)
    • André Staltz (4)
    • arxivblog (37)
    • Astral Codex Ten (15)
    • Atoms vs Bits (29)
    • AVC (45)
    • Basic Apple Guy (44)
    • Ben Thompson (13)
    • Benedict Evans (8)
    • Blog – storytelling with data (49)
    • Built For Mars (12)
    • Caleb Porzio (1)
    • Cameron Sun (2)
    • Christian Heilmann (43)
    • Christopher C (3)
    • Chun Tian (binghe) (1)
    • Codrops (23)
    • Cold Takes (16)
    • Dan Luu (1)
    • Daniel Lemire's blog (66)
    • David Amos (23)
    • David Perell (6)
    • David Walsh Blog (43)
    • Derek Sivers (30)
    • Desvl (16)
    • Devon's Site (5)
    • Digital Inspiration (28)
    • DKB Blog (4)
    • Douglas Vaghetti (12)
    • dropsafe (65)
    • DSHR (41)
    • Dunk (5)
    • DYNOMIGHT (41)
    • eagereyes (7)
    • Endless Metrics (135)
    • Entitled Opinions (8)
    • Exception Not Found (6)
    • Experimental History (26)
    • Farnam Street (6)
    • Fed Guy (12)
    • Felix Krause (3)
    • Florent Crivello (2)
    • Free Mind (7)
    • Full Stack Economics (40)
    • Funny JS (3)
    • Future A16Z (47)
    • Glassnode Insights (62)
    • Human Who Codes (5)
    • Infographics – Cool Infographics (12)
    • Information is Beautiful (13)
    • Irrational Exuberance (46)
    • Jacob Kaplan-Moss (13)
    • Jakob Greenfeld (51)
    • James Sinclair (3)
    • Jason Fried (21)
    • Jeff Kaufman (198)
    • John's internet house (31)
    • Johnny Rodgers (4)
    • Julia Evans (27)
    • Julian.com (2)
    • Kalzumeus (1)
    • Kevin Cox (13)
    • Kevin Norman (4)
    • KK – The Technium (51)
    • Krishna (7)
    • Lee Robinson (5)
    • Lines and Colors (53)
    • Lyn Alden – Investment Strategy (3)
    • Martin Fowler (30)
    • More To That (17)
    • Morgan Housel (82)
    • My Super Secret Diary (32)
    • Naval Blog (3)
    • Neckar's New Money (88)
    • Nick Whitaker (4)
    • Nicky's New Shtuff (1)
    • nutcroft (13)
    • Paul Graham (2)
    • Paul Graham: Essays (2)
    • Penguin Random House (91)
    • Phoenix's island (1)
    • Prof Galloway (37)
    • Python Weekly (35)
    • Rachel (36)
    • Real Life (34)
    • Sasha (68)
    • Science & technology (134)
    • Sébastien Dubois (6)
    • Secretum Secretorum (14)
    • Seth's Blog (188)
    • Shu Ding (3)
    • SignalFire (10)
    • Simon Willison's Weblog (255)
    • Simons Foundation (89)
    • SLIME MOLD TIME MOLD (25)
    • Slyar Home (8)
    • Spencer Greenberg (12)
    • Stay SaaSy (14)
    • Stephen Malina (4)
    • Stephen Wolfram Writings (2)
    • Strange Loop Canon (25)
    • Stratechery (11)
    • Tech Notes (11)
    • The Commonplace (30)
    • The Generalist (2)
    • The Intrinsic Perspective (31)
    • The Latest in Hearing Health | HeardThat (8)
    • The Mad Ned Memo (2)
    • The Rabbit Hole (38)
    • TLDR Newsletter (81)
    • Tomasz Tunguz (99)
    • Tony Kulesa (2)
    • Troy Hunt (68)
    • Tychlog (1)
    • Uncharted Territories (66)
    • Visualising Data (10)
    • Weichen Liu (21)
    • What's New (57)
    • Works in Progress (1)
    • Workspaces (32)
    • Writing (9)
    • Xe's Blog (42)
    • xkcd.com (134)
    • Yihui Xie (17)
    • Zoran Jambor (11)
©2023 搞英语 → 看世界 | Design: Newspaperly WordPress Theme