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

(buildkite.engineering)

46 points | by DrNemski 2 days ago ago

14 comments

  • toast0 2 days 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 2 days 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 a day 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 2 days 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 2 days 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 2 days ago ago

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

    • DrNemski 2 days 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 2 days 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 2 days ago ago

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

  • VerifiedReports 2 days ago ago

    That makes no grammatical sense.

    • paulannesley 2 days ago ago

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

    • Retr0id 2 days ago ago

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

      • VerifiedReports 2 days ago ago

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

        • Retr0id 2 days ago ago

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