A flaky test exposed a Redis client use-after-free

(buildkite.engineering)

46 points | by DrNemski a day ago ago

14 comments

  • toast0 18 hours ago ago

    > Harder still is when the cause of the bug happens prior to its manifestation.

    I've yet to debug a big where the manifestation happens prior to the cause... Sounds even harder. :p

    • lelanthran 17 hours ago ago

      > I've yet to debug a big where the manifestation happens prior to the cause... Sounds even harder. :p

      UB in C++ can have the manifestation occur prior to the cause :-/

  • StilesCrisis 12 hours ago ago

    Paragraphs and paragraphs of shaggy-dog setup, then "a coworker enabled ASAN and reported a bug [here]" with no elucidation. Disappointing.

  • serious_angel 21 hours ago ago

    Thank you very much! This is great read! Though, no actual steps mentioned, including the:

    > From this, he ascertained that the exception was triggered by a call to the C function memmove. While the source and destination addresses for this call looked sane, the size field was set to...

    I do get the most of these stated, but it would be awesome to know more about how he did actually find it, and with what toolset. Was is gdb, Valgrind, JetBrains, IDA Pro, or some another general/complex dump viewer/toolset?

    And, the interactive miracle, at the top of the website is freaking marvelous... It reminded me of the articles of the fluid simulation algorithms of Yusuke Endoh! Heartfelt gratitude to the developer, the artist who implemented it!

    Apparently, behind the scene, the fluid colors are contained in an array where every single color has a defined meaning!

         // categories in STACK order: index 0 at the floor → 4 at the surface
         const CATS = [
           { key: "Code", rgb: [133, 232, 157] },
           { key: "Craft", rgb: [179, 146, 240] },
           { key: "Lessons", rgb: [249, 117, 131] },
           { key: "Story", rgb: [255, 171, 112] },
           { key: "Opinion", rgb: [158, 203, 255] },
         ];
    • pinzonjulian 20 hours ago ago

      > And, the interactive miracle, at the top of the website is freaking marvelous

      That's the work of https://x.com/CoreyGinnivan.

      • serious_angel 20 hours ago ago

        Roger that! Thank you for the reference to the Artist!

    • DrNemski 20 hours ago ago

      Thanks! This happened two years ago and it took me quite some time to piece together all the information of when it happened. I will see if I can get the original gdb output and add it to the blog post.

      • serious_angel 20 hours ago ago

        Roger that! I'll look forward for an update, and hope to catch the moment and learn from it!

        Meanwhile, I do wish you, and the whole team, success, stability, and peace!

        • DrNemski 16 hours ago ago

          Thanks! I’ve added a screenshot of the gdb output to the blog

  • VerifiedReports 21 hours ago ago

    That makes no grammatical sense.

    • paulannesley 21 hours ago ago

      A (flaky test) exposed a (Redis client) use-after-free [bug]

    • Retr0id 21 hours ago ago

      Works on my machine. (Even though HN's filters removed the leading "How")

      • VerifiedReports 21 hours ago ago

        I don't think you're replying to the right comment, since I didn't mention anything working.

        • Retr0id 21 hours ago ago

          The "machine" in question is my brain (or at least, the part of it that parses grammar).