The Hardest Bug I've Ever Fixed: Best of ShopTalk

Поделиться
HTML-код
  • Опубликовано: 24 ноя 2024

Комментарии • 154

  • @kwazar6725
    @kwazar6725 23 дня назад +38

    Its immensely rewarding chasing bugs to their root cause and fixing it.

    • @jhwheuer
      @jhwheuer 23 дня назад +3

      @@kwazar6725 at least the fixing thing, yeah

    • @garanceadrosehn9691
      @garanceadrosehn9691 23 дня назад

      I sometimes enjoy just reading all the work someone has gone into fixing some obscure bug, because I can see how much work they put into it, and I can emphasize with the sense of satisfaction one gets when one finally pins down the actual root cause of some sporadic but infuriating bug!

    • @bryanjurish5433
      @bryanjurish5433 23 дня назад +3

      speaking for myself, finding & understanding the root cause is the rewarding part (dopamine kick) ... actually fixing it is "just" work.

    • @LTVoyager
      @LTVoyager 23 дня назад +1

      Not as rewarding as writing well designed and crafted code that runs for years without a significant bug.

    • @garanceadrosehn9691
      @garanceadrosehn9691 22 дня назад

      @@LTVoyager - Well, I've done that too. For me there's more of a rush of satisfaction in finding one bug *in someone else's code* which has been causing me headaches for months or even years. It's a very short-term rush though. Just a few hours of thinking "I finally got the bastard! [meaning the bug]".

  • @leightaylor8069
    @leightaylor8069 23 дня назад +43

    I had a friend who was customer engineer working on IBM equipment, and got a call out to a machine which had a vertically mounted 8" floppy drive as the boot drive. The report said that it wouldn't boot and was making a horrible grinding noise.
    Anyway, he inserted a new 8" diskette, turned the machine on, there was a horrible grinding noise and the machine didn't boot. He pulled out the diskette and found it was badly scratched.
    Tried again, same result. So he took the machine apart
    In the drive he found cigarette ends, aluminium foil and other debris.
    Turned out the cleaning lady thought it was a flip top bin and was emptying the trash into it.

    • @Liriq
      @Liriq 22 дня назад +1

      bruh 😮

    • @madbradfreeman
      @madbradfreeman 22 дня назад +15

      (Fortunately, she apologized, and went back to unplugging the server so she could plug in her vacuum!)

    • @guilherme5094
      @guilherme5094 22 дня назад +3

      Wtf!

    • @donforgie303
      @donforgie303 22 дня назад

      @@madbradfreeman in 97 or 98 I had complaints from operators at a plant that sometimes their operator HMI screens acted up for a little while so they couldn't see the graphics.
      We were blaming the UPS and wasted much time troubleshooting that intermittent problem with no luck.
      One night I was working late and about 9 pm old Ron the janitor came in to the control room and plugged his vacuum into the one unused orange UPS receptacle and turned it on, the 21 inch CRT monitor I was at immediately lost its mind until I reached over and unplugged Ron's vacuum.
      I finally just clipped the little jumper bars in the receptacle between the two plugs so that unused plug stayed dead.
      Problem solved lol.
      I also caught Ron spraying his cleaner solution over those big CRT monitors and wiping them down with a cloth.
      Janitors man 🙄🙄

  • @YoutubeBorkedMyOldHandle_why
    @YoutubeBorkedMyOldHandle_why 23 дня назад +21

    Back in about 1983 I had one of those transformative debugging experiences almost exactly as you described. I was working on an adventure game in Z-80 assembly on my TRS-80. Everything had been going just fine for a few days. Then, I added an item to a table and ... boonies. As I recall, a full on crash was not very eventful. A couple of clicks on the floppy disk and the TRS-80 prompt appeared on screen. I feel silly explaining it now as it seems so obvious, but at the time I just couldn't see it. Stared that mother down for a day and a half. Turns out that my 'items' table, (for which I had allocated what seemed like lots of memory), overwrote an adjacent pointer table by a couple of bytes. I've told this story many times, suggesting that until you've stared at a monitor for 13 hours straight trying to figure out how the simplest of changes brutally crashes the computer, you don't know what it's like to be a programmer.

    • @farab4391
      @farab4391 21 день назад +2

      Yep, the most difficult ones have always been the most obvious ones. The reason why at work we always used the 'fresh eyes' approach. Getting someone else to have a quick look to see if they can spot something obvious which you're not able to see because you've been staring at it for hours/days. The first few times it's extremely frustrating and annoying when someone else comes along and spots your mistake in less than 5 mins, but after a few you come to appreciate it as a valuable tool. And of course you get the opportunity to do it to other people's code as well 🙂

    • @YoutubeBorkedMyOldHandle_why
      @YoutubeBorkedMyOldHandle_why 21 день назад +2

      @@farab4391 Exactly. We used to refer to the 'janitor syndrome.' Same idea ... A janitor walks by after you've been staring down your code for hours and asks, "Why did you do that?"

    • @markmuir7338
      @markmuir7338 7 дней назад

      Or you’ve lived your entire career in Rust. I guess your point still stands 😉

  • @MartinPiper6502
    @MartinPiper6502 22 дня назад +10

    I was one of the coders on a Playstation 2 game. It was near completion but the game would be unstable, it would crash. All the coders were pointing fingers at each other, none of them were debugging the issue. It was obvious there was memory corruption, but the PS2 tools at the time did not have memory protection, did not have boundary checking. I spent days making the C/C++ code compile and run on a Windows PC using MS DevStudio. I enabled full heap and stack checking using the MS compiler options. Leaving the code to run a loop through the title screen, into the game levels, and back out again, quickly showed that an old bit of code that handled a general purpose link list of objects was to blame. It was not correctly handling unlinking and would lead to incorrect memory blocks being accessed and modified. In the end I made sure to point out what coder was responsible and make sure they knew exactly how much work and risk they had caused.

    • @harveysattic3918
      @harveysattic3918 21 день назад +1

      Yo thats so cool! Can you share more about the PS2 development? I grew up on the PS2 and would love to knlw and or learn more about how developing was for the PS2 back then!

    • @MartinPiper6502
      @MartinPiper6502 6 дней назад

      @harveysattic3918 once the compile and build tool chain it was pretty OK most of the time. The dev tools allowed the console to access files on the PC. The debugger was just about OK to use.

  • @garanceadrosehn9691
    @garanceadrosehn9691 23 дня назад +14

    I think the hardest bug I had to track down was when HP wrote a new implementation of Appletalk as part of a new network card. I had a customized version of CAP (Columbia Appletalk Package) which work absolutely fine with this new implementation, except that occasionally a network connection would just hang up *forever.* After months of debugging, I finally figured out that the problem was in error-handling of a dropped packet. And what's worse, is it came down to subtle and ambiguous wording in the official specification of Appletalk.
    The bug which took me the *longest* to track down was in a simple client for chat system. It just gets lines from the chat server and writes them out while letting the person at the terminal keep typing in their own messages. Every once-in-awhile my client would print out an extra blank line. It took me at least 18 years to track down that bug!

  • @robertjune1221
    @robertjune1221 22 дня назад +4

    This is really a blast from the past. I remember installing a hard drive on a floppy only system for one of my lab mates. I chose RLL versus MFM and the people we were buying the drive from kept questioning me. She said they didn't sell that many. I told her she should be happy that I was reducing her slow moving inventory.

  • @justintnyc
    @justintnyc 22 дня назад +3

    Thoroughly enjoyed the discourse!

  • @bobmurphy9651
    @bobmurphy9651 23 дня назад +6

    Look up, look way up! I will never forget that show.

    • @donaldteed35
      @donaldteed35 3 дня назад

      That doesn't happen in the US does it?

  • @jasonchen-alienroid
    @jasonchen-alienroid 19 дней назад +1

    The hardest bug I've addressed was in smartphone that under certain carrier, at certain times, everyone's phone around a time would seem to run out of battery. Sure, it's near the end of the day so people would just assume it's end of the day (actually around 5-6pm, on Fridays in certain European countries). Turns out there's some cellular protocol under certain circumstances, would be put into certain modes to save power. Without this feature, most smartphone would be out of power within 15-30min. What happened was that there's a race condition between the different cores, the modems cores and the applications cores. Since in mobile, both systems think they are masters and the others are secondary,... besides it's impossible to replicate, the modem core as well as all the code are highly protected to anyone outside the modem system. Out of entire world, was me and one HTC engineer both had a binary dump of the system and went through steps by steps to identify the bits. The modem team then had the visibility of the code mapped to the bit to determine the race condition.
    The second hardest bug I've address was when I was a bios engineer and we'd have system dried randomly. This was back in the days we first made all-in-one pc laptops. Instead of using the $300+ intel mobile CPU, we decided to use the $100 desktop CPU. we had tens of thousands of computers in factory running burn in tests and would just fail at random. turns out under certain conditions, the fans wouldn't perform and would melt... yes you read that right, melt...

  • @StarOfDavidKush
    @StarOfDavidKush 22 дня назад +2

    @Dave's Garage: Thanks Mr. Dave.. I love your content, and always enjoy the thrill of catching up on new episodes. Thanks again. Ahh, you take me down time's road making me reminisce my childhood growing up on an Atari, Apple IIe, Apple Mac, 6x86 Cyrix; IBM PC-DOS; IBM 486DX66Mhz MS-DOS then Windows 3.1 then Red Hat Linux.

  • @Hellsfoul
    @Hellsfoul 21 день назад +2

    Windows Recall always immediately reminds me on the movie Total Recall.
    So yes, the name is bad 😂

    • @Alexagrigorieff
      @Alexagrigorieff 15 дней назад +1

      They will remember it for you wholesale

  • @markmuir7338
    @markmuir7338 7 дней назад

    I like this highly edited Q&A session format - you covered a lot of ground quickly, even though I’m sure the conversation was an hour plus long IRL.
    Maybe this type of content could be a 2nd channel: Dave’s Attic, as you said at the end 😉

  • @gpTeacher
    @gpTeacher 22 дня назад +2

    Great insights as always Dave!

  • @sanderd17
    @sanderd17 21 день назад +1

    The hardest bugs are always the ones that are hardest to reproduce.
    If I can reproduce it in 10 seconds by running a testcase, I'll find out very fast. If it takes a couple of hours to reproduce, and only crashes half of the time... Well, good luck finding that one.
    My favorite one was a user who claimed the system changed her inputted numbers, sometimes. It was a warehouse application, with numbered boxes. Most worked automatically, but they could manually fill a box and register it in the interface.
    Safe to say, putting in the wrong box number caused quite some issues down the line.
    I couldn't reproduce it at all, not in a test environment and not even in the live environment. So in the end, I drove a couple of hours to that warehouse in the hope I would see something by just observing what she did.
    I watched her type in the number "063", and I thought I saw it change in a flash when she hit the save button.
    It all came together, it was an interface bug, not a bug in one of the communication protocols.
    I never tried entering numbers with leading zeroes, but apparently the interface framework we used, had a bug, and treated those as octal numbers.
    Finding that big was such a strange feeling. Happy that I finally found it, but mad that I spent a couple of days in total to find a bug in a library.

  • @michaelterrell
    @michaelterrell 23 дня назад +2

    I liked the BASIC on the C128, sine you could merge existing programs then run 'Rebumber to tighten up the layout. I wrote a lot of subroutines, including primative printer drives that I colud combine for a majority of programming projects.

  • @penelopetiberti2637
    @penelopetiberti2637 23 дня назад

    i was expecting a shrodinbug, but that was far from disappointing. :)
    Thank you Dave!

  • @ForbinKid
    @ForbinKid 22 дня назад +1

    I had a cheap Atari ST rollerball mouse, that had to be cleaned often when it stuttered or stopped. One weekend, it worked left/right but not up/down. After 3 tries at cleaning, I bought a new one, and an hour later back and running. Next weekend, same thing, but I knew it wasn't dirty yet. Turned out to be at that specific time of day, the sun through the window hit the side of the mouse, and affected the roller ball timing wheel. Can you imagine a user with that problem calling a help desk and being told to close the blinds.

  • @thelanavishnuorchestra
    @thelanavishnuorchestra 22 дня назад

    Oh, I used GFA Basic! Loved it. It was a great implementation for the Atari. I made a library of widgets so I could have standardized UI elements. 15 years later, I took that same approach to ASP web development, with libraries for database connections, UI elements, user input sanitation and a state machine template. 15 years later, I created a GTK framework for making Linux GUI apps in Python. So, I owe GFA Basic a lot of thanks. Oh, and I learned Basic on a PDP 11-70. So, you're really poppin' off for me the last month or so!

  • @DrFiero
    @DrFiero 23 дня назад +1

    I was slinging copper tube in my attic when I was installing my heat pump AC. It was 53C up there! :O
    So I know what you felt like about the "they'll find my dead body" thing! I maxed out at about 10 minutes before I had to come down to rehydrate.

  • @forehead3k
    @forehead3k 21 день назад +2

    Gotta add mine. Was a C static variable initialization order problem. It resulted in reading 1 byte beyond an array.
    Only showed up on SunOS when built with Sun’s C++ compiler without a debugger attached and NO code modification.
    Turned out the stars had aligned to place the array at the end of a page of memory and triggered a bus error.
    Obviously this was well before we had tools like valgrind. I’m surprised I still had hair by the time it was found.

  • @michaelangellotti5741
    @michaelangellotti5741 22 дня назад +1

    Dave. I can't help but tear up every time I see the Friendly Giant ending ... and I'm really starting to enjoy these episodes. Well done sir! Do you remember why you had latex gloves on?

  • @peytonlutz1
    @peytonlutz1 20 дней назад +1

    Great video! Talking about software, I'd love to see a video on every big Intel CPU (8088, 286, 386, so on) explaining key architectural differences and instruction additions that made it faster and easier for software developers to use like MMX and SSE instructions. I don't think very many videos exist talking about the improvements through the 90s especially, and it would be cool to see how Intel was a leading innovator through the 90s compared to the harder times they are facing currently. Thanks so much and I hope you get a chance to see this!

    • @rogfromthegarage8158
      @rogfromthegarage8158 20 часов назад

      I'm certainly not in Dave's league but I was around doing assembly language back in the early days. I think the difference between 8088 and 286 is really minimal. But the 386 was a big breakthrough with protected memory, segment registers, exception vectors and lots of really cool neat things.

  • @dukeofearl8078
    @dukeofearl8078 10 дней назад

    The simulator for the Space Shuttle was known as the "SMS" (Shuttle Mission Simulator). Back in the days before the Shuttle's first launch the simulator had to be created to train the astronauts. This SMS was based on a Sperry UNIVAC 1100 mainframe with several Perkin Elmer 3250 minicomputers performing aux functions such as payload simulations (how do I still remember this crap?). The simulator was a "motion-base" simulator, meaning it would move to simulate the astronauts' real world experience.
    The bug in question was a very noticeable mechanical oscillation when the simulator would execute the "roll maneuver" after launch. The bug persisted for months, to the extent that, for the first time, NASA put out a bounty on it.
    The bug was never found, and eventually launch day arrived. The Shuttle launched perfectly and, when executing the roll maneuver, exhibited exactly the same oscillation. The problem was not that there was a bug in the software, but that the simulation was too accurate.
    And now you know ... the ... rest ... of the story!

  • @lovzi9865
    @lovzi9865 22 дня назад +3

    For next. Give us the hardest bug you created! Bonus if you never told anyone about it before. Extra bonus if you took the credit for solving it.

  • @farab4391
    @farab4391 21 день назад

    The story of the byte reminded me of many arguments I had in the early years. At university I was taught a BYTE = 8 bits, but a WORD is whatever the size of the registers in the CPU you're using are. So, if the registers in your CPU is 8 bits, then a WORD is 8 bits, if the registers is 16 bits, then a WORD is 16 bits, etc. It makes sense, because you can imagine it as it is the amount your CPU can say in one go, a WORD. The problem was that at the time 16 bit CPUs, or 16 bit computers, were very popular and therefore a lot of people were taught or just learnt themselves that a WORD is 16 bits. Even now when you do a casual Google search you will probably be presented with a WORD = 16 bits (or 2 bytes), but when you dig a bit deeper you find it's not true, or at least it's only true in 16 bit CPUs 🙂

  • @ronm6585
    @ronm6585 22 дня назад

    Thanks guys. I grew up with the Friendly Giant as well.

    • @Egilhelmson
      @Egilhelmson 22 дня назад

      And I, but it was cancelled immediately before Mr. Roger’s Neighborhood (produced at WQED, our public TV station) came on the schedule.

  • @petervanderwaart1138
    @petervanderwaart1138 22 дня назад +4

    I was involved with a bug that had an entire group stumped. A report was not printing properly. The program was quite simple, and had been in use for months. Wrong printer control ribbon.

  • @jeremiefaucher-goulet3365
    @jeremiefaucher-goulet3365 21 день назад

    The hardest bugs I've had to fix usually came down to hardware bugs in the ASIC that had to be worked around somehow. There is one bug fix I've always refused to sign off on, because it was all a lie by the sales team. It required an extra capacitor on the circuit, and there was no amount of code we could write that would fix that one. But somehow, that's how it was sold to the customer.

  • @tommyovesen
    @tommyovesen 23 дня назад +1

    Europe here! Shop for us means a store.. But we know what it means in the US, Great video!

  • @philsbbs
    @philsbbs 22 дня назад

    8:30 I was so happy when defrag come in ms-dos 6.2ish I used the database program data-ease to store all the products in the warehouse for a well known worldwide retailer and we use to process picking list from it and lots more and once a week we run history reports it took a night to process due to where information was stored on the disc etc and then backups. Defrag cut the time it took to do jobs over night to under a hour a made using the system more user friendly less waiting for the paint to dry so to speak. Thanks Dave.

  • @theJellyjoker
    @theJellyjoker 23 дня назад +2

    [3:57]
    The attic is under the roof
    Where's the roof?
    On top of the house.
    Where is the house?
    You're not going to believe this but it's next to the garage.

  • @blaircr4496
    @blaircr4496 22 дня назад

    I also grew up with black & white console tv broadcasts of Friendly Giant on the farm near Yorkton. The young uns give me the side eye when I mention the Tickle Trunk!

  • @JouMxyzptlk
    @JouMxyzptlk 22 дня назад +2

    I LOVE UAC which came with Vista. Thank you for that! OK, the Win7 version required a few clicks less, but the concept of session isolation and being able to switch that easily for just one command is great. Today: Always set UAC to the highest level, and on servers even one step beyond to require a UAC confirmation for shutdown or reboot (unless you run the shutdown command from a shell started with admin rights).
    Dave, go back to Microsoft and fix the Windows 11/Server 2025 mess. There are so many weird bugs, like my current pet bug with data corruption in a Nested-V Machine with 1st-level being Server 2022 or Server 2025 using deduplication on the drive for the second level guests. Server 2019 is fine. I would post a link to server insider threads, but da tube...
    Oh, and make the UI fast, efficient and responsive again, so one does not need a fast GFX card to not go crazy and can use a thunderbolt dock again without going insane over that slow speed since it is still just thunderbolt and not PCIe16x.

    • @Alexagrigorieff
      @Alexagrigorieff 15 дней назад

      Why not just use an account with user privileges? You don't need UAC then.

    • @JouMxyzptlk
      @JouMxyzptlk 14 дней назад

      @@Alexagrigorieff What you say is in line with me. Running as "just a user" is even more safe, since then you have to enter an admins credentials on every UAC popup, and not just hit "confirm".

  • @normbograham3
    @normbograham3 3 дня назад

    One of the worst bugs, was when the stack and the heap collided. Jokes on us, after two days, we realized we could put them in different segments. It was from a huge, huge, 32 bit application that could not migrate to 64 bit, because of a library.

  • @caldodge
    @caldodge 21 день назад

    The wraparound error reminds me of a bug in the TRS-80 editor assembler for the TRS-80 Model 1. It was sold as a Radio Shack product, but was written by Microsoft. The assembler would happily assemble a relative jump of 128 bytes forward. When the processor executed the command, it jumped backward by 128 bytes. It took a bit of head-scratching to figure out the bug. I ended up disassembling the editor assembler, fixing the bug, then reassembling it.

  • @APWaddington
    @APWaddington 10 дней назад

    Not many people that remember the old Tandy TRS-80 Model 1. I learnt basic on one as well as a kid, it even had the expansion unit with the extra whopping 128Kb of memory, 2 5 1/2 inch floppies and a parallel port to run a big dot matrix printer for my uncle, my dad had a pen plotter

  • @rogfromthegarage8158
    @rogfromthegarage8158 20 часов назад

    I didn't solve this bug but I was part of the team trying to figure it out. We were working on a relatively early cell phone handset that runs in an RTOS. Something was consuming CPU cycles and we couldn't figure out what it was. A senior guy finally pinpointed it to a process that wasn't yielding. It was essentially in an endless do loop and never yielded back to the operating system.

  • @Cignets
    @Cignets 18 дней назад

    I did a similar thing in an 80 year old house to cut a new attic access a few decades ago...I was only saved by the new hole. I would not have made it out the original entrance. Those are interesting thoughts when you are in that moment!

  • @BerndFelsche
    @BerndFelsche 22 дня назад

    Once upon a time (1998) I was tasked to fix a bug in a banking application. Turned out that the code was a total mess of patches on top of bugs, including patches of code that'd been commented out. The 10,000 lines of code in numerous source files was also riddled with Y2k bombs, which nobody had yet thought of identifying.
    As the interfaces to the code could be identified, I gave the project manager the option of re-crafting from scratch or to fix the hundreds of previously unidentified bugs individually. I gave them an estimate of two weeks to get it done.
    The 1000 lines of source code which was delivered, working on time, included nearly 700 lines of comments describing functionality. i.e. 300 lines of code was all that it took.
    That included "novel" input parameter checking for plausibility, and being a database application, trapping all errors. The actual work was done in less than 50 lines.
    Had the code been left untouched until 2000, customers could have written cheques and only had their account debited by 10% of the amount.

  • @iowa_don
    @iowa_don 20 дней назад

    My hardest bug was back in college during punch card days where I typed a "0" instead of an "O". Fun times!!

  • @JohnVella1968
    @JohnVella1968 23 дня назад +11

    I'm in the UK, and I'd always assumed that shop was short for workshop.

  • @o2wow
    @o2wow 20 дней назад

    "Recall" called undo in various applications is damm handy.

  • @kensmith5694
    @kensmith5694 19 дней назад

    The term "Byte" was used at IBM before the 360 was brought out.

  • @suntracker844
    @suntracker844 5 дней назад

    DAVE ROCKS LIKE OZZY!

  • @jhwheuer
    @jhwheuer 23 дня назад +5

    Uh bug flea market. Mine was a XAML font glyph that was removed from the actual font. Three months because the editor did not notice and the runtime crashed without any information at random moments.

  • @Gregdotgreg
    @Gregdotgreg 22 дня назад

    I'm in the UK. I can confirm that the term 'shop' is an abbreviation for workshop here. Although workshop is probably used more than shop

  • @perwestermark8920
    @perwestermark8920 23 дня назад +5

    Borlands BGI graphics in Turbo C used calloc() to allocate the memory. Borland's calloc() did call malloc() - and then never checked if the allocation worked before clearing the returned memory.
    In far me ory model, a NULL pointer would be address 0000:0000 of that MS-DOS machine. Right where the interrupt table is. And MS-DOS runs a timer tick 18.2 times/second.
    So a random time later, that timer tick happened, but with the interrupt pointer trashed. So every single time I run my code, it crashed at a random time/place. And no hardware debugger that could step in and tell how everything ended up exploding.
    One of two runtime library bugs in the Borland C libraries that did bite and had me chase for way longer time than "normal" bugs.
    The advantage? I learned (the hard way) to spend extra time to make sure my own code doesn't have random failures from memory overwrites or from unsynchronized access to common data.
    And for all newer development, I also always have hardware debuggers that can help when writing interrupt service routines and hardware drivers, where traditional debugging doesn't work well.

    • @sirseven3
      @sirseven3 23 дня назад +1

      I'm trying to figure out how this is baked into windows currently. I am under the assumption that drivers are being rolled back from windows updates due to this memory allocation synchronization issue although I can't prove it yet. What would be a good avenue to try and narrow down this issue?

    • @perwestermark8920
      @perwestermark8920 23 дня назад

      @sirseven3 The BGI (Borland Graphics Interface) was a device-independent graphics library for MS-DOS. On MS-DOS, each individual program had to include the required graphics code to draw text, circles, lines, etc.
      The Borland languages did ship some such drivers for Hercules [monochrome], CGA, EGA, VGA and some more graphics standards.
      In Windows, everything is graphics, except the magic blue screen of death. So Windows very early in the startup loads either a custom driver [like from AMD, Intel or NVidia], or makes use of a generic SVGA driver.
      When normal Windows applications starts, then everything is already prepared for accessing all graphics drawing primitives.

  • @danmercer8139
    @danmercer8139 22 дня назад

    For me it was a self inflicted wound. I was just learning C and I was writing a text windowing system for our company’s brand of terminals. Couldn’t use curses because of some weird things the terminals supported - like using the same control sequence to turn on then off the same feature, like insert mode. After banging my head trying to get curses to work, I decided to roll my own. I used vprintf to create my own functions to move the cursor etc. under some circumstances, I was passing NULL instead of ‘’ and it worked fine. People are using the program without a problem until we upgraded the OS. All of a sudden, the cursor is jumping everywhere, terminals are locking up, it’s a nightmare. Finally, I realized when I passed a null pointer it was looking at position 0 in the memory which used to have a zero at that location so it was treated as ‘’. But now it had 1B followed by random information so that every time I passed vprintf a NULL it would generate a random escape sequence. Fixed with a simple ternary expression.

  • @christopherg2347
    @christopherg2347 21 день назад +1

    3:43 In germany we have:
    "Laden", the store place.
    "Werkstatt", the workshop area where you do repairs and assembly.
    But some places - especially in IT - do have both.
    I guess you shortened "workshop" to "shop", then ended up conflating it with the "shop" that means "store"?

    • @mr_b_hhc
      @mr_b_hhc 20 дней назад

      Englishman here but was in Kassel for two years, always thought laden was "load" (yes, I was programming). Is the difference the capitalisation of the word, or am I missing an umlaut?

  • @belljoxer
    @belljoxer 22 дня назад

    Dave, some of the Dec operating systems had flags you could set on files for contiguous (mandatory) and contiguous best try. With the mandatory flag set file creation would fail if there wasn't enough contiguous free space to complete the allocation even if there was plenty of free space remaining. This was used for some OS and performance critical files. If contiguous allocation failed you had to delete stuff ir defragment the disk before you could create the file.

  • @exponentmantissa5598
    @exponentmantissa5598 22 дня назад

    I had a whole 18 inch cubed box of floppies until 2 years ago. It was marked baby stuff and I had moved house to house without opening. ONe day I opened it and it was filled with old 5.25 floppies. I kept a few and tossed the rest.

  • @blakepace
    @blakepace 23 дня назад +5

    I LOVED my Commodore 64! I never played games on it, though. Wonderful machine for the times!

    • @Ny_babs
      @Ny_babs 23 дня назад +4

      @@blakepace Load "*",8,1 !

    • @pseudohakim4392
      @pseudohakim4392 22 дня назад +2

      I spend my money on a Vic20 and didn't have any left when C64 came out. Programming Pacman in 5k of ram taught me a lot of discipline though!

  • @exponentmantissa5598
    @exponentmantissa5598 22 дня назад +1

    ST506 was named from Shugart Technologies I believe.

  • @tg9754
    @tg9754 23 дня назад

    Hey, I remember installing and formatting a Seagate 1/2 height hard drive as mfm just like that. That takes me back to the 80's

  • @20chocsaday
    @20chocsaday 20 дней назад

    A couple from the USA invited people to their "garage sale".

  • @Alexagrigorieff
    @Alexagrigorieff 14 дней назад

    I've been chasing a bug in an embedded firmware on ARM with 3rd party runtime. After some code changes, a structure copy suddenly begin to crash with segfault.
    As it happened, the 3rd party runtime had a static area for malloc pool declared as an array. An array of bytes. Without enforced alignment. ARM can do simple read/write of unaligned words. But load/store multiple requires word-aligned addresses. When the compiler assumes that the source and destination are aligned, it generates inline copy code with load/store multiple commands. Because the malloc pool become unaligned (because arrangement of statics/globals changed), it was returning unaligned memory addresses.

  • @_willie
    @_willie 23 дня назад +4

    Hi Dave!

  • @ddguitars1969
    @ddguitars1969 18 дней назад

    The funniest one I ever heard, was from a tester who said he had a report from live deployed software running under windows. Every so often cpu usage would go 100%, and the software would stop responding. The devs tries to recreate it and failed, no one could get to the bottom of it… eventually someone went to site to observe it happening. Eventually it emerged. The dev went for lunch , came back and the site guys excitedly announced it was happening. When they went to the machine, it was the pipes screensaver….The machine wasn’t very powerful and some idiot had enabled it….it basically ate the cpu cycles for fun….

  • @seanwright4976
    @seanwright4976 22 дня назад

    Stop man, not gonna listen twice!! 😂

  • @DavidLeutzinger
    @DavidLeutzinger 20 дней назад

    Sounds like your attic needs some air flow! Too hot to handle.

  • @franklinwerren7684
    @franklinwerren7684 22 дня назад +2

    You know that I started with DOS 3.0 on an old IBM clone as well as a Tandy…and a Commordore VIC 20!!!!
    DE N2JYG

    • @mr_b_hhc
      @mr_b_hhc 20 дней назад

      BBC Master 512 here.

  • @allwaizeright9705
    @allwaizeright9705 23 дня назад

    I wanted to hear more about the C64 bug

  • @dudehuh5491
    @dudehuh5491 23 дня назад

    ah i thought that was more in Bob Ross realm

  • @JimConnelley
    @JimConnelley 21 день назад

    Overlays are from HELL.

  • @PaulDavies-uz4hq
    @PaulDavies-uz4hq 23 дня назад +1

    My hardest bug to fix was on a VAX running Fortran. As you know all arguments to FORTRAN subroutines are passed by reference, meaning the subroutine can change the arguments value. Unfortunately someone passed the literal value 0 (Zero) as one of the arguments, the subroutine assigned 1 (one) to it. From then on any use of 0 in the program used 1 instead. Had to debug in assemble to find out why 0 = 1. took a few days.

    • @douglasphillips1203
      @douglasphillips1203 23 дня назад

      Oh man thats enough to tear your hair out!

    • @PaulDavies-uz4hq
      @PaulDavies-uz4hq 23 дня назад

      @@douglasphillips1203 I don't have much hair left now!

    • @rdyer8764
      @rdyer8764 23 дня назад +2

      Mine was somewhat similar. I was working in Assy on either a Z80 or MC68xx. I wanted to load a register with a CONSTANT equal to the number 6 as a loop counter, but instead of specifying a literal by beginning it with a "#" as I should have, I omitted the "#" and the register was instead loaded with the contents of memory location $0006. I stared at that line of code for hours and hours without seeing the error. The hard part was that the contents of $0006 were dynamic, so an error happened regularly, but with different results since the contents of that address were rarely, but occasionally, 6. I had to bring in a colleague to help, and all I had to do was run through my code verbally and the error magically revealed itself. DUH!

    • @ka7znm
      @ka7znm 23 дня назад

      Is that what they call orthoganal for an instruction set? I mean the ability to use all types of data and addressing modes as operands... and with great power comes powerful bugs. Wonder if ChatGPT would have caught them...

    • @Egilhelmson
      @Egilhelmson 22 дня назад

      I thought that oddity/bug was well-documented enough that no one fell into it, anymore. Nice to see someone else fell into it

  • @MikeNovelli
    @MikeNovelli 22 дня назад

    Recall seems like it is more a tool for Microsoft to utilize in training a Large Model based on how the user engages with the HMI. It wants to know how to execute similarly but at a much faster pace.

  • @mikeklaene4359
    @mikeklaene4359 22 дня назад

    For me it was a feature of Microsoft's 5.1 C compiler.
    Seems that the keyword "volatile" was allowed syntactilly but NOT semantically.
    As in it would not generate an error, but it also did not generate the correct code.

  • @gts2ludovicofratts404
    @gts2ludovicofratts404 18 дней назад

    Hey .. did you say .. ".. back when I was on Ottawa.." ?

  • @sdrc92126
    @sdrc92126 23 дня назад

    The hardest bugs are hardware bugs....like timing problems when your variable spans a page.

  • @tomriley5790
    @tomriley5790 23 дня назад

    Was trying to work out why CTRL+ALT+DEL wasn't working so well on windows 11, guess have my answer now!

  • @dhpbear2
    @dhpbear2 22 дня назад

    10:42 - What was the discussion leading up to this? (forgiving bad video, but not forgiving bad audio)

    • @GlenHHodges
      @GlenHHodges 22 дня назад

      …questions from the AI voice video. It starts around 26:11 in the full Shop Talk episode on Dave’s Attic

    • @dhpbear2
      @dhpbear2 22 дня назад +1

      @@GlenHHodges Thanks.

  • @Lord-Sméagol
    @Lord-Sméagol 22 дня назад

    AmigaBASIC was hellishly slow! It was only usable once you had a compiler, such as HiSoft BASIC.
    But I didn't do much in BASIC on my Amiga; I was into 68000 asm to control the hardware directly.

  • @guilherme5094
    @guilherme5094 22 дня назад

    👍Nice!

  • @Ray_of_Light62
    @Ray_of_Light62 22 дня назад +2

    I believe the invention of shingles hard drive is the worst invention of the century.
    Hard drives with high capacity and low price, with no indications other than a model number and a red label, has ruined the day for many people who didn't know better. The closest device to a write-once hard drive.
    BTW. The excessive logging, reporting and files duplications made Windows barely acceptable after Vista. But Rec-All has been the drop that burst the barrell - I now have Debian on all my computers. It has been a really poor endgame on part of Microsoft...

    • @mr_b_hhc
      @mr_b_hhc 20 дней назад

      Absolutely, I still use Windows but go to great lengths to remove Recall and a great number of other data harvesting nonsense then create a custom image. Getting harder and harder and continually having to delve into undocumented components is really not fun anymore...

    • @brandyballoon
      @brandyballoon 4 дня назад

      I was bitten by the sneaky SMR drive substitution. What made me so pissed off was not the cost of replacing the drives, but the far greater cost of the time taken working out why the performance was so horrible.

  • @stewartpalmer2456
    @stewartpalmer2456 23 дня назад

    Dave, do you have any thoughts about NDOS and what happened there?

  • @MarsMan1
    @MarsMan1 21 день назад

    Dave: What do you think about NDVD and AI?

  • @whophd
    @whophd 11 дней назад

    Man, I hate pointers. (I grew up on self-taught BASIC, please don't judge). Since my computer science degree, I've always wondered if we can enforce coding without pointers … is it just a question of pure performance, at certain times?

    • @rogfromthegarage8158
      @rogfromthegarage8158 20 часов назад

      I suppose without pointers you would have a huge call stack if you tried to use strings as parameters.

  • @dantetriana148
    @dantetriana148 23 дня назад

    How does a code operate two or more actions at once. Nested codes? I am Reading sensors and seeking to act on data in real time.

  • @efflux89
    @efflux89 23 дня назад

    The channel being listed as from the States was throwing me off because I *KNEW* I was hearing a Canadian accent this whole time. I thought I was going nuts! 😂
    Anyway I love your content sir. Greetings from a Canadian American. 🇨🇦🇺🇸

  • @madbradfreeman
    @madbradfreeman 22 дня назад

    Your explanation of shingled is much less horrible than the drives themselves!
    I have an uncanny ability to find bugs. Not so much fix them. When I report them, the response is usually "Never happens. Won't fix."
    Well, /almost/ never! Fix it, ya bastiches!

  • @azharalibhutto1209
    @azharalibhutto1209 23 дня назад

    ❤❤❤❤

  • @MarsMan1
    @MarsMan1 21 день назад

    👍👍

  • @jmp01a24
    @jmp01a24 8 дней назад

    Tour de France you mean? Tbere's no Commodore 64 games called Tour De Force.

  • @DAN-HRT
    @DAN-HRT 23 дня назад

    I was confused at first as I watch this yesterday. Note Dave, I need more mugs 😂 one isnt enough as my misses stole my cup today and is using it 😂😂

  • @p.j.wilkins1321
    @p.j.wilkins1321 23 дня назад +1

    Re: temp in the attic... 90? 130? I know you've lived in the US for a long time, but still... 🙂

    • @DavesGarage
      @DavesGarage  23 дня назад +4

      120F. The F is for Freedom ;-)

    • @perwestermark8920
      @perwestermark8920 23 дня назад

      ​@@DavesGarageAnd freedom units is the freedom to create confusion. 😜

    • @sdrc92126
      @sdrc92126 22 дня назад

      @@perwestermark8920 The right tool for the right job

    • @mr_b_hhc
      @mr_b_hhc 20 дней назад

      @@DavesGarage Sorry to disagree, Englishman here, but the F is for what the "F***" XD

  • @carsongent8420
    @carsongent8420 23 дня назад

    Hi Dave, back in my university days we had DEC Rainbows they used an incompatable format. We could make the floppy disks readable on both the Rainbows and the IBM Compatables by formatting them 8 sectors single sided. That's from memory that has taken a few cosmic rays😮.

  • @loupasternak
    @loupasternak 22 дня назад

    The old wrap around !

  • @06madmartin
    @06madmartin 17 дней назад

    hey dave could u not add friends of the channel section in ur channel profile to link ur other channels and maybe channels u recommend. u said that daves attic needed more attention.

  • @farmallpaul4518
    @farmallpaul4518 22 дня назад

    LOL!!

  • @charliebucket-u7h
    @charliebucket-u7h 22 дня назад

    !!!DAVE!!!!
    Can't get to the bottom of this tech question online..
    Got a laptop with usb thunderbolt ports. No ethernet.
    For gaming I need to use a USB to ethernet dongle..
    Will a pow quality dongle compared to a top quality one effect ping and general connection quality?
    Thanks

  • @LewisMoten
    @LewisMoten 23 дня назад

    Was windows recalled? What went wrong?

  • @Ny_babs
    @Ny_babs 23 дня назад

    Hey Dave, I don't know much about Autism and folks having kids. Maybe to personal; but if you don't mind sharing, are any of your children autistic?

    • @DavesGarage
      @DavesGarage  23 дня назад +2

      No, but a couple of them are certainly on the spectrum, but not to the point of actually having ASD!

    • @Ny_babs
      @Ny_babs 23 дня назад

      @DavesGarage thank you for sharing. I wondered if it has genetic traits that get passed on. Heterozygous like.

    • @mr_b_hhc
      @mr_b_hhc 20 дней назад

      @@DavesGarage Forgive my ignorance but I thought the "S" was for spectrum?

  • @griffon2-6
    @griffon2-6 23 дня назад +1

    ahh yes, the crap shingled drives that crap wd was selling for nas without disclosing its crap shingled drives, still fu wd

  • @MrDevilkeh
    @MrDevilkeh 23 дня назад

    Third

  • @ThePetar13
    @ThePetar13 23 дня назад

    First 😂

    • @DAN-HRT
      @DAN-HRT 23 дня назад +2

      Technically not, it was on the other channel a day ago