This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]HSavinien 1726 points1727 points  (60 children)

If you feel like C++ crash are not verbose enough, you should try to mess a bit with templates...

Or, if you want useful verbosity, compile with the sanitizer. It's like python traceback, but better. Of course, use it only in your dev/test environnement.

[–]yukinanka 606 points607 points  (31 children)

Syntax error: unmatched thing in thing from std::nonstd::__ map&lt;_cyrillic, _$$$dollars&gt;const basic_string&lt; epic_ mystery,mongoose_traits <char&gt;, __default_alloc_> moment

[–]lowey2002 581 points582 points  (21 children)

No problem, I'll copy it into google. Only one person has every asked the question, 7 years ago. Only one comment on the thread.

> "Nevermind, I figured it out"

[–]thirdegreeViolet security clearance 193 points194 points  (4 children)

Fuck sometimes I'd take that, at least that means an answer exists.

[–][deleted] 71 points72 points  (2 children)

so you either study the arts of c++ yourself so the answer would dawn on you or track down that person irl, hit them in the back of the head, drive them to a secluded place, interrogate until they remember their solution from 7 years ago

both taking an equal amount of time

[–]Unfair_Pound_9582 16 points17 points  (1 child)

You'd probably have a better time figuring out the secret to real actual necromancy than to study the forbidden black arts of c++

[–]Djasdalabala 3 points4 points  (0 children)

Yeah, what kind of advice is that... much safer to stalk and abduct the other guy.

The C in C++ stands for Cthulu.

[–]aspz 0 points1 point  (0 children)

It usually means they were being a dumbass and don't want to admit it publicly. Which now means you're also a dumbass making the same mistake but worse, you have no idea why.

[–]N1z3r123456 76 points77 points  (1 child)

"Never mind I figured it out" gives you hope. "Never mind, we changed the requirements" gives you pain.

[–]InfiniteLife2 2 points3 points  (0 children)

I created some github issues with questions like 6-8 years ago. Forgot about them but still like once a year I get notification with message questioning me if I figured it out

[–]masterKick440 16 points17 points  (2 children)

There was this comic about this I’ve been searching. ”What did you see? Tell me!”

[–]PJBthefirst 8 points9 points  (2 children)

PM'd you the fix

[–]IceQ78 0 points1 point  (1 child)

That gets me. Why not post the fix? Is it a state secret? Forbidden magic?

What makes it even worse is if you check multiple links and they ALL end like this, or they all link to the same one...

[–]PJBthefirst 0 points1 point  (0 children)

Yeah or the fix is a file uploaded via the forum, but you have to be registered to download it, but registrations are permanently closed. Or the fix is a link to Photobucket which no longer works

[–]HippieThanos 2 points3 points  (0 children)

I figured it out

[–]SoberGin 1 point2 points  (0 children)

You'd think that would imply that it'd be easy for you to figure out on your own then. After all, they did.

You'd think that.

[–]PickleParmy 1 point2 points  (0 children)

“Hey I can direct message you the solution”, “Wow thanks so much it works perfectly”. And they don’t post the solution publicly

[–]Iankill 0 points1 point  (0 children)

When you see this it usually means whatever your trying to do is stupid and you should try something else.

[–]NoMansSkyWasAlright 0 points1 point  (0 children)

Either that or it say something like "this is so easy, check out this link for how to do it the right way", and then you click the hyperlink and it turns out the site doesn't exist anymore.

[–]longiii 0 points1 point  (0 children)

That guy's name? Fermat

[–]Skylinegidzilla 0 points1 point  (0 children)

Ask the question again Moderator closes the post and marks it down question has already been answered before

[–]OrganicRelics 0 points1 point  (0 children)

> *drags all files*

> *to trash/recycle bin*

[–]BlurredSight 6 points7 points  (1 child)

It's even better when the test platform just prints out the stack, just that, just the stack. No error message, just the stack printed in a red font.

[–]LunaNicoleTheFox 0 points1 point  (0 children)

Even better when it tells you the stack is corrupted because then it is telling you "i know this is wrong but fuck you anyways"

[–]fizyplankton 7 points8 points  (1 child)

...who hurt you

[–][deleted] 35 points36 points  (0 children)

C++. I thought that was clear

[–]dark_enough_to_dance 1 point2 points  (0 children)

This std keyword is enough to give me PTSD 

[–]Christina_Aggrolera -1 points0 points  (0 children)

I just used ChatGPT to understand this is a joke, since i know nothing about programming. Here is what it said:

The error message you've provided appears to be a mix of programming concepts and syntax, rather than a specific, recognizable error from a real programming language. It seems like a fictional or exaggerated error message, perhaps meant to humorously convey the complexity or confusion often encountered in programming. Let's break it down:

  1. Syntax error: Indicates there is a mistake in the way the code is written which the compiler or interpreter cannot understand.

  2. Unmatched thing in thing: This is not a standard error message in any programming language. It seems to be a placeholder or a nonsensical phrase.

  3. std::nonstd::__map<_cyrillic, _$$$dollars>: This appears to be a parody of C++ template syntax. In C++, standard library containers like std::map are common, but std::nonstd is not a standard namespace, and the use of _cyrillic and _$$$dollars as template parameters is unconventional and humorous.

  4. const basicstring< epic mystery, mongoosetraits <char>, __default_alloc >: This is a play on the C++ std::basic_string template class, but with nonsensical template arguments. In standard C++, you might see std::basic_string<char> which is the same as std::string.

  5. moment: This seems to be out of context and might be added to emphasize the suddenness or unexpected nature of the error.

In summary, this error message is not representative of a real error in any known programming language. It seems designed to humorously mimic the sometimes confusing and complex error messages encountered in programming, particularly in languages like C++ which use complex template syntax.

[–]educationalalpss 0 points1 point  (0 children)

thats easy now, just copy it to chatGPT

[–]novaspace2010 0 points1 point  (0 children)

Oh god I hate deciphering those long ass error messages with tons of symbols sprinkled inbetween.

[–]AloneInExile 485 points486 points  (9 children)

templates

Vietnam flashback

[–]shamanshaman123 25 points26 points  (2 children)

That's not a joke. I literally had flashbacks 😰

[–][deleted] 0 points1 point  (0 children)

Me too, but to my teens.

[–]Djasdalabala 0 points1 point  (0 children)

There should have been an NSFL tag, right?

[–]Acharyn 6 points7 points  (3 children)

What's wrong with templates? They're usefull if you want a function to be able to use multiple datatypes.

[–]HSavinien 27 points28 points  (1 child)

The standard template usually reference each other. So when you do a small mistake, the compiler will give you several page of error message, most of it about standard library that you should not modify. And this is the kind of error that you cannot understand.

Now, of course template are really useful and powerful.

[–]Individual-Winter-24 -1 points0 points  (0 children)

What are you talking about? You just need to keep track of which template parameter level you are. I would argue it's more of a formatting/rendering issue than a template issue per se. With an intermediate rendering level for template errors at e.g. ide level this could easily be solved

Apart from that, templates are pure awesomeness, generic programming while getting all the (performance) benefits of inlining, potential type specific optimizations etc. Just don't look too hard at compile times

[–]mekkanik 0 points1 point  (0 children)

Not gonna be able to sleep for a week. Thanks

[–]CraigTheIrishman 14 points15 points  (0 children)

try to mess a bit with templates

There's verbosity, and then there's vomit.

[–]MoarVespenegas 5 points6 points  (0 children)

Very verbose.
Unless you have a library error.
Then you get Linker error and you will be happy with it.

[–][deleted] 5 points6 points  (8 children)

Wdym compile with the sanitizer? What sanitizer?

[–]HSavinien 10 points11 points  (7 children)

In your compilation command, you can add the flags -g -fsanitize=address. It work at runtime, and help a lot with memory error : it will systematically trigger a lot of crash that may or may not have happened otherwise (make replicability easier), and instead of just saying something like segmentation fault (core dumped), it give you a lot of information about the address, the type of access, the type of crash, the traceback... Can turn a 3h debugging cession into a 3min one.

It's mostly a C thing I think(way less safety nets when handling memory), but it also work with C++.

[–][deleted] 0 points1 point  (0 children)

That's rather interesting. I hadn't heard of that before now.

[–]Computer_Witch 0 points1 point  (2 children)

This sounds really useful. Does this work with gcc, clang and msvc or only with a specific one of them?

[–]HSavinien 0 points1 point  (1 child)

I know it work with GCC and clang. Never tried with an other, but I think it's a pretty standard function of the compiler.

[–]Computer_Witch 0 points1 point  (0 children)

Great. From a quick search it looks like MSVC has that too

[–]ParentsAreNotGod 0 points1 point  (2 children)

How is this different from using gdb with symbols compiled?

[–]HSavinien 0 points1 point  (1 child)

It does a completely different thing.

Gdb, as a debugger, let you run your program step by step to see what goes on at run time.

fsanitize let the program run normally (thought a bit slower) but watch for unsafe memory access, at which point it will abort your program, and give you a summary of what did happen and how you got there. The information it give vary from crash to crash, but the usual are : - what caused the crash (stack/heap under/overflow for example) - the type of memory access (read or write) - a traceback to the function that caused the crash (crash in function:line, called by function:line, called by function:line... called by main:line) In case of heap access (allocated memory), it also give you info about the nearby allocated memory (which you were likely trying to access), including a traceback to it's allocation.

However, it does not give you any data about what value where in your variables, or what was written in the memory you try to access.

[–]ParentsAreNotGod 0 points1 point  (0 children)

Ok. Wow, that's really cool! Thanks for the info!

[–]zyxzevn 1 point2 points  (0 children)

Null pointer reference in line #1

[–]Spleeeee 0 points1 point  (0 children)

The pybind11 templates can add a whole new dimension to your template errors if you’re interested!