Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "fuck mingw"
-
So I'm writing some multithreaded shit in C that is supposed to work cross-platform. MingW has Posix threads for Windows, so that saved already half of the platform dependency. The other half was that these threads need to run external programs.
Well, there's system(), right? Uhm yes, but it sucks. It's incredibly slow on Windows, and it looks like you can have only one system() call ongoing at the same time. Which kinda defeats the multithreaded driver. Ok, but there's CreateProcessA(), and that doesn't suck.
Fine, now for Linux. The fork/exec hack is quite ugly, but it works and is even fast. Just never use fork() without immediate exec(). First try under Cygwin... crap I fork bombed my system! What is this shit? Ah I fucked up the path names so that the external executable couldn't be run.
Lesson learnt: put an exit() right after the exec() in the path for child process. Should never be reached, but if it goes there, the exit() at least prevents a fork bomb.
Well yeah, sort of works under Cygwin, but only with up to 3 threads. Beyond that, it seems like fork() at some point gives two processes the same PID, and then shit hangs.
Even slapping a mutex around the fork and releasing it only in the parent process didn't help. Fork in Cygwin is like a fork in the ass. posix_spawn() should work better because it can be mapped more easily to the Windows model, but still no dice.
OK, testing under real Linux. Yeah, no issues with that one! But instead, I get some obscure "free(): invalid size" abort. What the fuck would that even mean?! Checking my free() calls: all fine.
Time to fire up GDB in the terminal! Put a catch on the abort signal, mh got just hex data. Shit I forgot to compile with -O0 and -g. Next try. Backtrace shows the full call trace, back to the originating line in my program - which is fclose() on a file.
Ahhh I remember! Under Linux, fclosing a file that is already closed makes the program crash. So probably I was closing it twice. Checking back.. yeah that's where it was.
Shit runs fast on several cores now!8 -
Fuck. I just want to fucking use OpenCV on CLion on Windows. Why the fuck do I need twenty fucking PhD's in quantum rocket science to set up a simple project with Cmake?
During the time I just wasted trying to get the correct library to link properly, I could have rewritten all of Tesla's fucking CV functionality from scratch, but instead here I am spending literal fucking hours googling why the fuck does 'recursive_mutex' not name a fucking type in namespace 'std' on mingw.
Fuck C++ I'm going back to C# where I can literally install OpenCV and all of its fucking dependencies from nuget with ***ONE*** fucking click.6 -
Why the fuck does Windows still not have a fcking decent package manager?
I hear you "but but but, there is Chocolatey, it's great, try it!". Well yeah if you only want binaries.
But I do need to, you know, develop and compile things, and without includes, code, and a reliable way to produce working binaries from that, it's useless.
Guess who needs to download dependencies one by one, compile them one by one?
Don't get me started on broken MinGW, or the "recommended" way of doing a bat script to have proper includes (what the hell, that's the entire purpose of env variables), or the fact that there is NO convention on where to install things.1 -
Fuck++ I C only red error messages which make me god damn furious. Why is it such a pain in the ass to ./configure this stupid external lib to work on Windows on MinGW and Qt Creator? Why can't I just pip install that crap and import from a single line of code instead of getting fucked several hours without even realising what's fisting me that hard?
You are penetrating me C++. I'm not happy with that. I can't figure it out cause the docs are crap.
Just add the path to the libs they say. Just add the include directory they say. It's damn easy they say.
You know what? IT'S A FUCKING PAIN IN THE AS I SAY! DAMN IT. -
*Solve this question*
*Me: Compiler?*
*Question- Fek just solve me :v*
*Me: GCC would give correct ans*
*Question- Fuck no, Mingw ;_; *
#nubCProgrammer ;-;
Sed Loif3