Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Would a person struggling with a stack overflow actually google "stack overflow", though? Surely only a very fresh programmer would need to google it, and only if he/she knew what the concept was. But here's what an infinite recursion in a C program prints if I run it:

    Segmentation fault: 11
Well, that's C for you. If I try Ruby:

    test.rb:2: stack level too deep (SystemStackError)
Ok, still not the same nomenclature. Python:

    RuntimeError: maximum recursion depth exceeded
Nope. How about Go? ... Actually, an infinitely recursing function in Go never completes on my machine. I wonder why. Perhaps it's not using the stack the way I expect.

If you do the same thing in Java:

    Exception in thread "main" java.lang.StackOverflowError
Ok, there it is.

But if do you get that, would you not google "StackOverflowError", as opposed to "stack overflow"?

(Then again, my Google searches are perhaps uncommonly precise. If a function "foobar()" in library "libfoo" overflowed when processing HTTPS URLs, I would probably google for "foobar stack overflow libfoo https url".)

The Wikipedia entry for stack overflow (the concept) is the fourth hit on a search for "stack overflow". Should be acceptable to a newbie.



> Actually, an infinitely recursing function in Go never completes on my machine.

Maybe your function is tail-recursive? Try to use the return value from the recursive call in a nontrivial way, so that stack storage is necessary to store some local variable.


Apparently Go allocates the stack as a heap structure, as was pointed out in another comment: http://stackoverflow.com/questions/4226964/how-come-go-doesn...


"only a very fresh programmer would need to google it"

It's why this is a top story on Headquarters of Noobs. Not surprising. You mean Lenny Kravitz didn't write American Woman?


What's HQoN?


I remember having seen "stack overflow" when I naïvely tried to allocate a 5MB array on the stack in Visual C++ 2010.


Trying this with GCC gives me a segfault (although I had to go higher up to 8 MB).

    #include <stdio.h>

    int main(void) {
      char x[8388608];
      printf("%ld\n", sizeof(x));
      return 0;
    }


My point was that Visual C++ 2010 gives a different error, but it was running in debug mode.


And my point was that GCC was not as helpful in that case. :-) With the GNU C library you will have to install your own signal handlers and jump through a lot of hoops to get anything more sensible than a "segmentation fault" error. You would think our tools would be a bit more modern by now.


Oh by the way, I'm not sure if it was exactly 5MB, it might actually have been 2MB. This particular case was 2 years ago, now.





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: