this post was submitted on 02 Jan 2026
92 points (98.9% liked)

Programming

24336 readers
114 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

I thought of this after a recent bug I found. I use Vivaldi browser and recently it updated. After the update my mouse cursor was not visible when within the browser window. Other programs worked fine. I tried visual studio and steam and epic game store all had my mouse, Vivaldi didn't.

I closed all instances of Vivaldi via task nanager(was unable to click the x) and restarted it. That fixed the bug and I haven't been able to replicate so I don't have anything to submit for a bug report. Just a really strange thing.

What have been your weirdest bugs?

top 50 comments
sorted by: hot top controversial new old
[–] daniskarma@lemmy.dbzer0.com 4 points 6 days ago

TIC-80 has terrible performance on firefox browser. But when you open the firefox debug logger to try pinpoint the issue it runs flawlessly.

[–] jh29a@lemmy.blahaj.zone 1 points 5 days ago (1 children)

Definitely (being young and recency bias) all the weird stuff happening in the lua engine in the old ComputerCraft versions (1.45ish and 1.75) I'm playing.

I'm not really testing rigorously enough, but it seems to have been in 1.45, which i stopped playing because of other reasons (turtle api too primitive), making a function a() return a function b() that captures one of a's local variables, made it crash.

now on 1.75 it doesn't do that anymore, but now I pass some functions through the output of a coroutine, and they just sometimes turn into nil when I call them the second time. it literally throws "attempt to call nil on line 245" when line 245 is like:

242 if func == nil then
243  -- something else
244 else
245   resA, resB = func()
246 end

I even printed func before calling it, and it told me it was a function, except earlier, where it told me it was nil. Now I'm going to stop using coroutines and hope the architecture of my program changes enough so the bug goes away.

I'm playing the Direwolf20 season 7 minecraft modpack btw

[–] jh29a@lemmy.blahaj.zone 1 points 5 days ago* (last edited 5 days ago)

ok the last one was because i misspelled an identifier and because when you call a function in a table, my stupid lua attributes the problem to the call site and not where the function is defined

[–] stardustpathsofglory@lemmy.world 2 points 6 days ago (1 children)
[–] vrek@programming.dev 2 points 6 days ago

A bug in a Microsoft product? Impossible!

[–] BehindTheBarrier@programming.dev 2 points 6 days ago* (last edited 6 days ago) (1 children)

Not sure if it fully fits, but one of my old HTC android phones has a bug where it would randomly fail any network request, by just never finishing it. No timeouts either.

It never got fixed. Loading a page in the browser, got stuck, and would need a new refresh. Some apps like Baconreader would get stuck doing the same, any app could have it happen. But sometimes the stars align, Facebooks Messenger had (has? don't see it anymore) the chat bubbles that showed over whatever else on the screen. And i clicked one of those, and they got stuck loading. And there was literally no way to close it. There was no timeouts, so i eventually had to hold the power button and reboot...

Other notable mentions, Spotify on android did not handle duplicated files (since you could add your own music to it) with the same filename or at least artist - title metadata. It would always only play one of them. It was very interesting because Spotify on pc worked, so i could play the second track fine there, but if i told it to continue play through my phone then it would continue form the same timestamp on other track.... Might be related to my phone being stupid, but there was a whole range of infuriating spotify issues. So i just moved to use poweramp and store and sync local music since i had a lot there to begin with .

[–] vrek@programming.dev 1 points 6 days ago (1 children)

Why would you have 2 files with the exact same name? Windows can't even handle that if in the same folder and I would assume Spotify just dumps all files into a folder hence why it didn't work.

[–] BehindTheBarrier@programming.dev 3 points 6 days ago (1 children)

They had different names like (1) if they were duplicates. But all my files were named something like "Artist - title.mp3", and the Metadata tag for artist and title were generated based on the filename. I don't know how they would look after being synced over to my phone from Spotify though, but it is probably how Spotify names the files that broke it on my phone.

All the files were in the same folder on my pc too, for reference. So they have unique filenames, but two files could have the exact same artist and song title. I give that's it's an obscure edge case, but really frustrating.

[–] vrek@programming.dev 1 points 6 days ago (1 children)

Why did you have multiple copies of the same song and artist? Only reason I can think of is like jam band concert versions but i would assume it would be like artist - song - year. Mp3 in that case

[–] BehindTheBarrier@programming.dev 2 points 6 days ago (1 children)

I have shitty music taste, and ended up downloading nightcore songs from YouTube. And the videos were usually named "Nightcore - song title". So chances of duplicate songs end up a lot higher when the only unique thing is the title of the song...

[–] vrek@programming.dev 1 points 6 days ago

Ah ok that makes sense

[–] ulterno@programming.dev 0 points 6 days ago
[–] mushroommunk@lemmy.today 59 points 1 week ago* (last edited 1 week ago) (5 children)

I joined a team and was assigned a bug that had been bugging them for two years. Randomly files they saved would be corrupted.

Eventually isolated it to the third party library they used to serialize the data. For some reason this library corrupted file names that were an odd length. So "cat" would get corrupted while "cats" would save and load just fine. It was a black box library we didn't control so was told to just program a workaround to check filename length and append a character if it was odd and move on.

I still want to know what that library was doing.

[–] A_norny_mousse@feddit.org 18 points 1 week ago

I still want to know what they library was doing.

Haunting

[–] ReducedArc@lemmy.world 9 points 1 week ago (1 children)

Notepad on windows, I think around the XP and earlier versions, had a similar bug. If you typed this app can break and saved it, the file would be corrupted. Something to do with the number and placement of characters.

[–] clean_anion@programming.dev 10 points 1 week ago

ASCII was interpreted as UTF because the function that checked whether the given text was Unicode checked the difference between bytes at even and odd positions. Many of the common phrases used to trigger this were in the 4-3-3-5 format (by letters), e.g., Bush hid the facts However, there was never any reason that this format of character placement was necessary for the bug (though even length was necessary)

load more comments (3 replies)
[–] azdle@news.idlestate.org 30 points 1 week ago (2 children)

I worked at an IoT platform startup. All of our embedded device demos stopped working August 1st. I was told the same thing happened last year, but it was fine, things would start working in September. I decided to go fix it anyway. Eventually I figured out the culprit was a custom HTTP library. Instead of doing anything sensible, the way it found the Content-Length header was to loop over the bytes of the response until it found the first 'g' add 5 to that pointer and then assume that whatever was there was the number of bytes it should read. Unfortunately, HTTP responses have a Date header which includes the month and August has a 'g' in it.

There were a bunch of these demo devices already flashed and shipped out. The 'fix' to get them to work, even in August, was to downgrade requests to HTTP 0.9 which didn't require a Date header in the response.

[–] A_norny_mousse@feddit.org 8 points 1 week ago* (last edited 1 week ago)

That's "I wrote my first shell script" type of bad. I remember Ubuntu+GNOME used to be full of such crap in their early days. There are still some helper scripts around from those days (the naughts), you can still catch a whiff of it.

[–] vrek@programming.dev 5 points 1 week ago (1 children)

Is there any reason they couldn't just look for the complete "Content-length" string?

[–] azdle@news.idlestate.org 9 points 1 week ago* (last edited 1 week ago) (1 children)

Yeah, to be fair, there was an issue getting string.h to work (so i could just use strstr) with the vendor's shitty toolchain, that took me talking to an engineer at the vendor, and the dev who wrote that was out of our Taiwan office. But also, my first fix was just doing a sort of sliding-window check, manually checing for s[0] == '\n' && s[1] == 'C' && s[2] == 'o' &&..., which was gross, but much more correct.

[–] vrek@programming.dev 7 points 1 week ago (1 children)

Wait...not being able to use a basic library like string.h opens up so many other questions

[–] azdle@news.idlestate.org 5 points 1 week ago (1 children)

🤷, embedded device manufacturers were really bad at software back then. I honestly don't remember the details anymore.

[–] vrek@programming.dev 4 points 6 days ago

The only words I don't believe there are... Were and back then

[–] CameronDev@programming.dev 19 points 1 week ago* (last edited 1 week ago) (1 children)

Early in the GNOME /wayland transition, there was a bug I hit where you could drag windows off the edge of the screen, and somehow the desktop would scroll. It was kinda cool conceptually, but completely broken functionally, as it was hard to scroll back.

Edit: Wayland was actually the solution, Xorg was the problem:

https://programming.dev/pictrs/image/bc70285d-88ac-42aa-80be-b8b8f012547b.png

https://programming.dev/post/6905486

load more comments (1 replies)
[–] FizzyOrange@programming.dev 15 points 1 week ago (6 children)

OPAM (OCaml's package manager) had a bug where it couldn't find curl or wget to download stuff with (don't ask me why it shelled out to those in the first place) if you were in more than 32 Unix groups. Have fun thinking of a reasonable explanation for that!

[–] Gonzako@lemmy.world 7 points 1 week ago

Opam doesn't endorse polyamory past a certain threshold

[–] JakenVeina@midwest.social 5 points 1 week ago

I'll hazard a guess... OPAM was using a text-based utility to get the list of groups, and 33 is the point where the list would wrap to a new line.

load more comments (4 replies)
[–] Inucune@lemmy.world 11 points 1 week ago

Load 2TB of data into ram during startup. Prompt user credentials to continue. Whoops, we need to do cryptography on those credentials... Free the heap. Invalid creds force exits. Valid creds goes gray until those 2TB are loaded back into memory... From storage halfway across the country over the 3mbps link, the best available in BFE.

[–] prettybunnys@piefed.social 10 points 1 week ago (2 children)

It’s not a bug per se, and we’re gonna see a lot of this moving forward.

Did a code review, hefty code review, and as I got to the end of it where “the magic happened” I discovered that the logic was actually a case statement for every permutation.

Because they’d asked the AI to write logic to go through each type, the AI wrote a case statement for EACH TYPE.

… it was so fucking fast though. So wrong but so so fast compared to the actual running code.

[–] vrek@programming.dev 6 points 1 week ago (1 children)

Fast to run or fast to make?

I'm a big fan of if it's stupid but works it's not stupid, especially if you get a runtime speed improvement.

Yeah it might be theoretically difficult to make an update but if by "each type" you mean like the primitive data types (string, int, char etc) I doubt the language is going to change how, for example, an int works. If you they do so many programs will break.

[–] prettybunnys@piefed.social 6 points 1 week ago (1 children)

It ran super fast but only over that one constrained input, it didn’t allow for new use cases.

[–] vrek@programming.dev 5 points 1 week ago (1 children)

Ah ok, i was thinking you meant the previous solution was so complicated so the basic switch sped it up

[–] prettybunnys@piefed.social 7 points 1 week ago (1 children)

The LLM basically just did the work once for the sample data set, so all the computation happened up front.

If that was the only data set we’d ever need, and the data set didn’t change realtime based on sensors then … hell yeah that gross switch woulda worked 😂

load more comments (1 replies)
[–] ZoteTheMighty@lemmy.zip 9 points 1 week ago

I use a 3D CAD software that once you switch to 3D mode, it makes things partially transparent, but it does so by scaling the opacity of the entire window. The end result is that transparent parts look correct when you have a black desktop background, but otherwise you'll see what's on the window behind it or the desktop background. Same issue when you get gaps between two sides or curves. I think no one noticed because they would usually launch it from a terminal, so they always had black backgrounds.

[–] Ephera@lemmy.ml 8 points 1 week ago

We deployed a client software in a Docker container on Windows 10. It could not connect to the backend, even though we saw SYN packages originating from it.
So, we ran WireShark on the Windows host and saw that the SYN-ACK packages from the backend were arriving there, too, but no ACK came through to complete the TCP handshake.

Eventually, we rolled out a network debugging container on that Windows host and then could see in the tcpdump, that the SYN-ACK packages, which arrived on the Windows host, just did not show up in the container. Hyper-V or something was quietly dropping them.

Other network connections were working fine, just the SYN-ACK from our backend triggered this.

[–] irelephant@lemmy.dbzer0.com 6 points 1 week ago* (last edited 6 days ago) (4 children)

Chrome sometimes scrambles json like this. If I copy the scrambled json, it's fine when I paste it

[–] x00z@lemmy.world 4 points 6 days ago (1 children)

That looks unformatted and not scrambled. Last time I used Chromium it didn't come with a JSON formatter so I had to install an extension for it.

[–] irelephant@lemmy.dbzer0.com 3 points 6 days ago* (last edited 6 days ago) (1 children)

The text is nonsense though. Look closer, some of the fields are jumbled.

Chrome does come with a formatter now.
For example, towards the end there is dItsop with is supposed to be postId

[–] x00z@lemmy.world 3 points 6 days ago

Oh I see. That's very random, lol. It's completely backwards.

Maybe this Chrome view of the JSON encounters a right-to-left character?

load more comments (3 replies)
[–] aev_software@programming.dev 6 points 1 week ago (1 children)

Once upon a time I worked with a CMS that allowed an admin to delete the CMS itself and also any web server that ran it. Poof: gone. Fun times.

[–] vrek@programming.dev 6 points 1 week ago

to be real evil, create a test to confirm what that button does cause you know....100% code coverage

[–] theit8514@lemmy.world 6 points 1 week ago (2 children)

Right clicking the title bar of a window on Linux Mint, the menu appears but I can't click it until I move the window away from it (the menu doesn't close) and then it becomes responsive. I love Linux.

load more comments (2 replies)
[–] sukhmel@programming.dev 6 points 1 week ago

I recently tried Pop!OS liveUSB without a mouse connected to PC, there were some accessibility issues but one was unrelated to mouse and pretty cursed:

I chose system language to be something non-latin-based, and ended up with a keyboard layout that can't input English text. There was no way to change the layout and adding the US layout didn't work, because system showed that the US layout is already the one and only available. So I couldn't input commands to set things up but also couldn't click in the UI to set things up

[–] MarekKnapek@programming.dev 5 points 1 week ago (7 children)

Win32 MFC desktop application, should be able to run continuously unsupervised for days or weeks. When I log in via RDP it crashed. Yes, just in that moment. In the end I figured it out.

MFC supports multiple visual styles, such as classic Windows, few Office versions and few more. We used feature for loading (possibly translated) strings (resource) from various DLLs. First from a currently active plug-in DLL, if the string was not there, then from a sub-system DLL, if it was not there then from main EXE. Plus there was some logic about translation and fallback to English in case of missing or not up-to-date translation. The cause was in one of the MFC visual styles, it changed a global variable related to that string loading thing for a short duration of time, then changed it back. It was only in one of the styles and there was no need to change it, the code could just load the value and use it as a parameter to a function that needed it. Our code in a different thread failed to load a string and threw an exception. Cross a COM interface boundary. Every COM method is decorated by a bunch of macros our senior engineer didn't understand and was not willing to learn. One of the macros was noexcept. Thus an exception being thrown cross an noexcept boundary crashed our app.

[–] SuperSpruce@lemmy.zip 0 points 6 days ago (1 children)

But COM interfaces can't pass exceptions, only HRESULTs. I don't know how it was working in the first place if the setup was this janky.

[–] MarekKnapek@programming.dev 2 points 6 days ago

Yes, that is correct. We were using C++ and COM and didn't protect ourselves against accidental exception being thrown across the COM boundary. But it never happened. Except the one case CString::Load (or whatever the function name was) failed because of Office visual style had bug in it.

load more comments (6 replies)
load more comments
view more: next ›