• Rob Kohr (unregistered)

    The funny thing is the spam filter is right. These messages are junk.

  • Kelly (unregistered)

    The second one isn't a WTF - this probably happened because he said "throw new Win32Exception()" for no real reason, so GetLastError() returned 0.

    captcha: bathe - probably good advice for some potential commenters

  • (cs)
    1. Ha, never saw that before, but I think it only shows it to you after a fresh install anyways and not an upgrade...

    2. The "The operation completed successfully" exception is probably due to the .NET framework not immediately storing the error code that caused the exception. Then it went off and did something else successfully, causing the GetLastWin32Error code (or whatever it's called) to change to SUCCESS, which it then picked up for use in the exception.

    I'm only thinking of this because I read a blog post on normal Win32 stuff which described how the error code must be stored immediately or else it will be overwritten (someone was puzzled when they got error code 0 after an operation failed... they were doing other stuff before getting the error code).

    Of course the .NET framework shouldn't fall prey to such a bug, especially since it's impossible to fix it!

    1. That's just bad coding right there. Localhost should always be accessible, and (although I say this with lesser certainty) LAN access ie 10., 192.168..

    Addendum (2007-11-02 12:30): Kelly: It's a SocketException... although he could have thrown it himself, it wouldn't have been much of a WTF then. I suppose one of the lines below could assign a new exception to e, but that also wouldn't make this a WTF.

    Though I suppose it could be like those people who send in a video to America's Funniest Home Videos*, without mentioning it took them 20 takes to get right.

      • Cultural reference for non-Americans: It's a show where people send in their accidental funny amateur video clips to be shown on TV. Example: Someone is video taping a wedding and the bride throws her bouquet into the air for someone to catch... and it gets stuck on a light fixture or lands on a candle and catches on fire or something.

    AFHV keeps all the clips you send them (they become AFHV property) so when they get several new videos with a similar theme they can also pull out older footage and string them together (IE 6 short clips of people falling off jetskis in various ways). And out of all the new clips shown, one is chosen as the funniest (it's NEVER the one you as a viewer at home would choose though) and they get a large cash prize.

  • (cs)

    Dammit! I hate when an operation completes successfully. It's always hell figuring out what went wrong.

  • Anonymouse (unregistered)

    You can have good reasons to want to block LAN IPs.

    And though I can't imagine exactly when, it seems to me that the ability to block localhost could come in handy in some situations. Regardless, good software acts as your nanny optionally.

  • (cs)

    There's a separate GetLastError for Winsock (WSAGetLastError, I think...). Could it be a call to the standard GetLastError by mistake?

  • (cs)

    Forum cat is not amused. More stories please. kkthx.

  • TANJ (unregistered)

    Rumor has it that if you access yourself too much you could go blind. This prevents blindness in computers. :-)

  • (cs) in reply to TANJ

    On the other hand, if we irrevocably block all access to 127.0.0.1, a lot of spam and virus problems would just go away...

  • sweavo (unregistered) in reply to FredSaw
    FredSaw:
    Dammit! I hate when an operation completes successfully. It's always hell figuring out what went wrong.

    or pinpointing the exact line where it went right.

  • (cs)

    3rd may not be a WTF... many software firewalls have rules for connecting to localhost to prevent pinging itself infinetly

  • (cs) in reply to The MAZZTer
    The MAZZTer:

    AFHV keeps all the clips you send them (they become AFHV property) so when they get several new videos with a similar theme they can also pull out older footage and string them together (IE 6 short clips of people falling off jetskis in various ways). And out of all the new clips shown, one is chosen as the funniest (it's NEVER the one you as a viewer at home would choose though) and they get a large cash prize.

    PLEASE write 'ie' in lower case. Seeing 'IE 6' gave me a nasty turn.

  • Nathan Blume (unregistered)

    I'd be much more upset if my firewall did not attempt to stop applications from using TCP/UDP to create loopback connections.

  • (cs) in reply to Alistair Wall
    Alistair Wall:
    The MAZZTer:

    AFHV keeps all the clips you send them (they become AFHV property) so when they get several new videos with a similar theme they can also pull out older footage and string them together (IE 6 short clips of people falling off jetskis in various ways). And out of all the new clips shown, one is chosen as the funniest (it's NEVER the one you as a viewer at home would choose though) and they get a large cash prize.

    PLEASE write 'ie' in lower case. Seeing 'IE 6' gave me a nasty turn.

    Just imagine he meant "clips of IE 6 users falling off jetskis". Much better sentence that way.

  • (cs) in reply to teqman

    Last time I read the Win32 docs, WSAGetLastError() was there only for API compatibility.

    As it was said, the code probably detected an error, but called another Win32 function before calling GetLastError(). I see this kind of thing a lot in both Win32 and unix worlds:

    if (!do_something()) { // ok, the error code is in errno
        char *msg = malloc(...); // oops
        int errorcode = errno;
        sprintf(msg, "Error: %s", strerror(errno)); // Error: no error
    }
    

    People forget that malloc(), printf(), even strerror() are also system calls that override errno.

  • foo (unregistered) in reply to Rob Kohr
    Rob Kohr:
    The funny thing is the spam filter is right. These messages are junk.

    Don't they have a networked Bayseian filter? I'm betting that many of the users who open their first email message and see "Welcome to Thunderbird" report it as spam, so the spam blocker is indeed correct.

  • Dude (unregistered)

    These just keep getting lamer by the day

  • $|i(3_x (unregistered) in reply to Alistair Wall
    Alistair Wall:
    The MAZZTer:

    AFHV keeps all the clips you send them (they become AFHV property) so when they get several new videos with a similar theme they can also pull out older footage and string them together (IE 6 short clips of people falling off jetskis in various ways). And out of all the new clips shown, one is chosen as the funniest (it's NEVER the one you as a viewer at home would choose though) and they get a large cash prize.

    PLEASE write 'ie' in lower case. Seeing 'IE 6' gave me a nasty turn.

    I was also left wondering what 'Internet Explorer 6' had to do with AFHV. Better than 'ie'--use 'e.g.,'.

    ie means id est/'That is to say'. eg means exempli gratia/'For example'.

    Correct uses: Let me tell about my favorite drink, ie root beer. I enjoy many other drinks, eg water or juice.

  • b0bg0ats3 (unregistered)

    FIST!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • eff Five (unregistered)

    there's a forums.microsoft.com post by a forums moderator that explains

    "The generic explanation for a www.thedailywtf.com error message like that..."

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=602258&SiteID=1

    Even they know its banged up.

  • Mj (unregistered)

    Is the wtf the fact that he is catching all types of exceptions?

  • (cs) in reply to BradleyS
    BradleyS:
    Just imagine he meant "clips of IE 6 users falling off jetskis". Much better sentence that way.
    Falling off jetskis after too many brewskis.
  • Ralphie (unregistered)

    Sweet Christ, will you people learn how to spell infinitely correctly? in + finite + ly

  • Mike Dimmick (unregistered)

    If this really came from System.Net.Sockets, it's typically due to not having the SetLastError property of the DllImport attribute set to 'true'. .NET Framework calls many Windows APIs in order to actually perform a P/Invoke so comes with a warning: trying to P/Invoke GetLastError is not reliable, you must use the SetLastError property. You have to opt in to getting the last Windows error code because it obviously adds some overhead and so, for speed, the default is not to.

    As far as I can see, every system call that .NET 1.1 and 2.0 make to Winsock is decorated appropriately. So I'm not sure where this has come from.

    In general Windows APIs don't overwrite the last error code with 0 when they succeed. Also, Windows APIs that return an error code (rather than a BOOL) generally don't overwrite the last error code at all. But there are a few which don't follow these rules (can't find a list right now).

  • NullPointerException npe (unregistered) in reply to Kelly
    Kelly:
    The second one isn't a WTF - this probably happened because he said "throw new Win32Exception()" for no real reason

    Throwing an exception for no real reason isn't a WTF?

  • MCoder (unregistered) in reply to Kelly
    Kelly:
    The second one isn't a WTF - this probably happened because he said "throw new Win32Exception()" for no real reason, so GetLastError() returned 0.

    Ok, but how is it not a WTF again?

  • (cs)

    I've always thought that the error system in windows was a WTF by itself. The fact you can do something completely innocuous as part of your error handling code, and then lose the error completely, just seems like bad API design

  • Rod Horny (unregistered) in reply to Dude
    Dude:
    These just keep getting lamer by the day

    CAPTCHA=stinky

    Is that better?

  • Alonzo Meatman (unregistered)

    The real WTF is Visual Studio's debugger. Specifically, I'm talking about how needlessly difficult it is to examine the values in your object variables. Half the time, even if you're willing to drill down, it's impossible to know where your values are hidden. Static members? Non-public members? Base class? WTF?!

  • (cs) in reply to Alonzo Meatman
    Alonzo Meatman:
    Half the time, even if you're willing to drill down, it's impossible to know where your values are hidden. Static members? Non-public members? Base class? WTF?!
    Get to know the Locals window.
  • (cs) in reply to b0bg0ats3
    b0bg0ats3:
    FIST!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Lies and shenanigans. Reproted.

  • (cs) in reply to Lysis
    Lysis:
    b0bg0ats3:
    FIST!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Lies and shenanigans. Reproted.

    It can't be reproted until it's been proted.

  • (cs) in reply to $|i(3_x
    $|i(3_x:
    Correct uses: Let me tell about my favorite drink, ie root beer. I enjoy many other drinks, eg water or juice.

    Except that the punctuation should be: Let me tell about my favorite drink, i.e., root beer.

  • (cs) in reply to Anonymouse
    Anonymouse:
    You can have good reasons to want to block LAN IPs.

    And though I can't imagine exactly when, it seems to me that the ability to block localhost could come in handy in some situations. Regardless, good software acts as your nanny optionally.

    If malicious software is already on localhost, it's too late.

    I can't really think of a case where a program would connect to localhost to talk to itself or another program... it would be a WTF. I am not including programs that can by design connect to ANY address. Just ones that would ONLY connect to localhost. A non-WTF program which wanted to talk to itself or another process would most certainty use some other method which can't be blocked by firewall.

    Or maybe these methods are all harder than simply using sockets, I dunno, I don't work with inter-process communication much. I wrote a MapFileToView thing for a mIRC DLL I made once to talk to mIRC, but that's about it.

    I suppose a program which connects to localhost to perform some annoying task you don't want could be improved by blocking it (assuming you NEED to use other features it offers) but I can't come up with an example of one.

  • Andrew Badera (unregistered)

    I was on the verge of sending a similar WTF to the "success on error" this week ... one part of what I do at the day job is work with a legacy mainframe system, with request and response strings going back and forth, screen scrape via gu3270 emulation. One of the mainframe transactions for paying insurance claims returned an error status code even when the message turned was "CLAIM SUCCESSFULLY PAID" (paraphrasing) which tricked the .NET code wrapped around it into throwing an exception.

  • Sgt. Preston (unregistered) in reply to Alistair Wall
    Alistair Wall:
    The MAZZTer:

    AFHV keeps all the clips you send them (they become AFHV property) so when they get several new videos with a similar theme they can also pull out older footage and string them together (IE 6 short clips of people falling off jetskis in various ways). And out of all the new clips shown, one is chosen as the funniest (it's NEVER the one you as a viewer at home would choose though) and they get a large cash prize.

    PLEASE write 'ie' in lower case. Seeing 'IE 6' gave me a nasty turn.

    Periods wouldn't hurt either.

  • (cs)

    127.0.0.1 is the most evil EVIL EEEEVIL place on earth... GOD FORBID SPYWARE SENDS YOUR PERSONAL INFORMATION TO 127.0.0.1!!! YOU WILL BE IN 1337 H4X0RZ 7R0U8L3!

  • (cs)

    127.0.0.1 is a nasty guy. Hack him!

  • (cs) in reply to webrunner
    webrunner:
    I've always thought that the error system in windows was a WTF by itself. The fact you can do something completely innocuous as part of your error handling code, and then lose the error completely, just seems like bad API design
    By "in windows" you must mean "in the C language". Unix systems have *exactly this problem* with errno.
  • Grammar Nazi (unregistered)

    The real WTF is that copywriting isn't misspelled, for once.

  • Sinan (unregistered) in reply to DanielKO
    People forget that malloc(), printf(), even strerror() are also system calls that override errno.

    http://c-faq.com/stdio/printferrno.html:

    (More precisely, errno is only meaningful after a library function that sets errno on error has returned an error code.)

    In general, it's best to detect errors by checking a function's return value

    Sinan

  • (cs) in reply to Sgt. Preston
    Sgt. Preston:
    Alistair Wall:
    The MAZZTer:

    AFHV keeps all the clips you send them (they become AFHV property) so when they get several new videos with a similar theme they can also pull out older footage and string them together (IE 6 short clips of people falling off jetskis in various ways). And out of all the new clips shown, one is chosen as the funniest (it's NEVER the one you as a viewer at home would choose though) and they get a large cash prize.

    PLEASE write 'ie' in lower case. Seeing 'IE 6' gave me a nasty turn.

    Periods wouldn't hurt either.
    How do you know that "Periods wouldn't hurt?"

  • (cs) in reply to Sinan
    Sinan:
    People forget that malloc(), printf(), even strerror() are also system calls that override errno.

    http://c-faq.com/stdio/printferrno.html:

    (More precisely, errno is only meaningful after a library function that sets errno on error has returned an error code.)

    In general, it's best to detect errors by checking a function's return value

    Sinan

    What I tried to point out was: before doing anything else (maybe even before testing for error) is to save that global, extremely volatile GetLastError()/errno value, before you use it for anything else.

  • Alonzo meatman (unregistered) in reply to FredSaw
    FredSaw:
    Alonzo Meatman:
    Half the time, even if you're willing to drill down, it's impossible to know where your values are hidden. Static members? Non-public members? Base class? WTF?!
    Get to know the Locals window.

    Oh, but I have. That makes it a bit easier because it lets you use Intellisense. However, you still run into the same problem when you want to click-and-drill.

    Basically, the way they designed their click-and-drill interface is utterly useless and retarded. Intellisense is your only friend in this scenario.

  • Sean (unregistered) in reply to The MAZZTer

    Ramble much?

  • Joe blow (unregistered)

    CAPTCHA:tacos <-- now I am hungry!

    The WTF is people spelling Copyright as Copy Write. Remember it is a "right" you exercise not something you "write" home about.

  • (cs)

    LOL The Thunderbird department responsible for spam filtering is jealous of the copywriting department..

  • (cs) in reply to Joe blow
    Joe blow:
    CAPTCHA:tacos <-- now I am hungry!

    The WTF is people spelling Copyright as Copy Write. Remember it is a "right" you exercise not something you "write" home about.

    Nope, it's you who's wrong.

    Copyright: "The exclusive right given by law for a certain term of years to an author, composer, designer, etc. (or his assignee), to print, publish, and sell copies of his original work." ~OED

    Copywrite: "(rare) To write the copy (or text) of an advertisement; to have a job as a copywriter." ~Wiktionary, OED doesn't have Copywrite included.

    They are different words, the former is much more common than the latter. A copywriter writes copy (as in text), a copyrighter claims the (exclusive) right to copy (as in duplicate) something.

    There's only one reason I can think of to block access to 127.0.0.1: $malicious_program has altered your system so it actually connects to a remote machine when a program tries to connect to 127.0.0.1 (perhaps only on the specific port it uses). Unlikely but not THAT unlikely, it would be a clever way for $malicious_program to try and evade a software firewall.

  • Anon (unregistered)

    OK, the Thunderbird error is a WTF but it's not the spam filter detecting a built-in "welcome" message as spam.

    The message being displayed is the default message shown in the preview pane when you open Thunderbird but haven't selected any email. Once you've selected an email, it gets replaced, and there's supposed to be no way to get back to it - if you manage to select nothing again (by, for example, selecting a new folder to view) it reverts to a blank view.

    If it were an actual email, the email headers would be displayed under the "thinks this message is junk" bar. (E.g., the subject, from, date, to, and CC headers.)

    So the WTF isn't that Thunderbird identified a "welcome" email as spam, it's that it identified something that isn't actually an email message - or really any "message" since Thunderbird also does news groups and RSS feeds - as spam. Presumably this is because the theme the user was using is broken. (And, yes, a themeable email client is a bit of a WTF on its own.)

  • (cs) in reply to The MAZZTer
    The MAZZTer:
    I can't really think of a case where a program would connect to localhost to talk to itself or another program... it would be a WTF.
    One example is X Window System software, which frequently connect to the window server on localhost. I've wondered if some sort of abstraction relating to this is why Firefox and Thunderbird both have to connect to themselves:
    firefox.exe:1380	TCP  127.0.0.1:1274  127.0.0.1:1275  ESTABLISHED
    firefox.exe:1380	TCP  127.0.0.1:1275  127.0.0.1:1274  ESTABLISHED
    firefox.exe:1380	TCP  127.0.0.1:1280  127.0.0.1:1281  ESTABLISHED
    firefox.exe:1380	TCP  127.0.0.1:1281  127.0.0.1:1280  ESTABLISHED
    ...
    thunderbird.exe:1248	TCP  127.0.0.1:1042  127.0.0.1:1043  ESTABLISHED
    thunderbird.exe:1248	TCP  127.0.0.1:1043  127.0.0.1:1042  ESTABLISHED
    thunderbird.exe:1248	TCP  127.0.0.1:1047  127.0.0.1:1048  ESTABLISHED
    thunderbird.exe:1248	TCP  127.0.0.1:1048  127.0.0.1:1047  ESTABLISHED
    If you close these connections, the program will sit at 100% CPU but will still functional otherwise normally. So I remain at a loss as to why it feels it necessary to create them.

Leave a comment on “Internal Feud”

Log In or post as a guest

Replying to comment #:

« Return to Article