Gentoo is not TRWTF



  • I'm installing Gentoo on a severely underpowered VM. I noticed that one of my emerge instances had stopped outputting anything for over ten minutes, so I pushed Ctrl+C. Then this happened:

    Exiting on signal 2
    sandbox:stop  caught signal 2 in pid 23937
    sandbox:stop  signal already caught and busy still cleaning up!
    rm: cannot remove `confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3/confdir3': File name too long
    
    /usr/portage/sys-apps/coreutils/coreutils-8.17.ebuild: src_configure aborted; exiting.

    I guess that's what was taking so long...



  • 23937 is the zip code for Drakes Branch, VA. THIS MUST MEAN SOMETHING



  • Had a similar issue with this with one of our COTS (Commercial Off The Shelf) products that we used on a previous program.  Every time you installed it, it would put an install configuration settings in a special config folder to remember your settings if you would do a reinstall.  But... it also happened to create a config folder in that config folder to hold the install config settings.  On our test environment they reinstalled it with every build.  So randomly one time it failed to install and gave no nice error messages or anything, it just would die.  Took several days before a tester discovered the magical install config folder that had over 20 nested sub folders (each folder also had a rather long name too).



  • This isn't a Gentoo WTF, but autotools WTF IIRC. For some reason, certain configure scripts try to figure out how deeply you can nest directories. And on some filesystems, you can nest really really deep - and there's no cutoff in configure (IIRC, it took around 40 minutes before the limit was hit).



  • @ender said:

    This isn't a Gentoo WTF, but autotools WTF IIRC. For some reason, certain configure scripts try to figure out how deeply you can nest directories. And on some filesystems, you can nest really really deep - and there's no cutoff in configure (IIRC, it took around 40 minutes before the limit was hit).

    Sounds like one of those "If you have to ask the limit of something, you're doing it wrong" moments.

    True story: Lua (a scripting language designed for easy incorporation into other programs) has a limit to how many functions you can create. I know this because I have actually hit that limit. I was trying to concatenate three different Lua scripts into one Lua instance. Lua has a built-in function for loading and concatenating multiple files, but it works with filenames and opens the files directly; this is a problem because my project stored resources in .tgz archives. The solution I eventually came upon was to write a custom reader function. I don't remember the exact syntax, but basically the reader gives back a pointer to the data in memory and the size of the block of data, and Lua reads that in, calling your reader over and over again until it returns a size of 0. This worked out well for me because, by the time I was loading in Lua scripts, my resource system had already dearchived all of the resources and loaded them in memory, so all I had to do was retrieve the items I wanted to load into Lua.

    Anyway, the function I wrote used a global state variable, and it would load in a different file based on the state it was in. Naturally, I forgot to increment the state, and since my archive manager cached files in memory indefinitely, the pointer it returned would always be valid. So it just loaded in the same file, over and over, forever. In doing so, it would create 2 functions on every iteration, and it doesn't check for colliding names until you execute the file, which actually registers the functions. Thus, Lua eventually threw up an error about the 1.7 billion functions I had tried to create.

    TRWTF is probably my solution here, but I assure you it sounded perfectly reasonable at the time. At least it's just my senior project and not a production system.


  • ♿ (Parody)

    @curtmack said:

    True story: Lua (a scripting language designed for easy incorporation into other programs) has a limit to how many functions you can create. I know this because I have actually hit that limit...Thus, Lua eventually threw up an error about the 1.7 billion functions I had tried to create.

    Sounds like you ran out of memory or symbol table indexing space (or whatever...I'm not familiar with the implementation details of Lua). Not really a WTF, unless you consider finiteness or resources to be a WTF, in which case TRWTF is you.


  • Discourse touched me in a no-no place

    @curtmack said:

    [...]but it works with filenames and opens the files directly; this is a problem because my project stored resources in .tgz archives.
    archivemount?



  • At university we tried to parse Java 1.5. The parser was generated by ANTLR which usually works fine. But when we tried to adapt the grammar to C# the generated parser got a little bigger. Eclipse complained that it can only compile functions with a maximum length of 64KB.



  • @curtmack said:

    True story: Lua (a scripting language designed for easy incorporation into other programs) has a limit to how many functions you can create. I know this because...

    @hallo.amt said:

    At university we tried to parse Java 1.5. The parser was generated by ANTLR which usually works fine. But when we tried to adapt the grammar to C#...

    Dear Hustler, I never thought the stories you publish were true until something similar happened to me! I was sitting at a bus stop, and up walks...



  • @PJH said:

    @curtmack said:
    [...]but it works with filenames and opens the files directly; this is a problem because my project stored resources in .tgz archives.
    archivemount?

    Good idea, although my project needed to run on Windows in order to be presented and I can't find any Windows ports of archivemount. I used libarchive.

    The resource manager is a whole WTF unto itself, but that's a story for another day. Suffice to say, I'm just happy those lessons were learned in college, and not in a production environment

    And yes, the WTF is me. That was the point of the story.



  • @boomzilla said:

    unless you consider finiteness or resources to be a WTF, in which case TRWTF is you.
     

    What?!

    Resources are finite?

    What is this commie bullshit!

    Consume! Consume! Consume! Consume! 


  • ♿ (Parody)

    @dhromed said:

    @boomzilla said:
    unless you consider finiteness or resources to be a WTF, in which case TRWTF is you.

    What?!

    Resources are finite?

    What is this commie bullshit!

    Consume! Consume! Consume! Consume!

    Nonononono. It's the commies who don't understand scarcity.



  • @ender said:

    This isn't a Gentoo WTF, but autotools WTF IIRC.

    Or it could be some sort of regression of the kernel/sandbox problem described in https://bugs.gentoo.org/show_bug.cgi?id=125701.

     



  • @DaveK said:

    Or it could be some sort of regression of the kernel/sandbox problem described in https://bugs.gentoo.org/show_bug.cgi?id=125701.
    Might be, except that I've had it happen when running configure myself on a NFS mount.



  • @hallo.amt said:

    At university we tried to parse Java 1.5. The parser was generated by ANTLR which usually works fine. But when we tried to adapt the grammar to C# the generated parser got a little bigger. Eclipse complained that it can only compile functions with a maximum length of 64KB.

    That's a limitation of the Java class file format rather than something Eclipse-specific. I've run into it too with auto-generated code, but I can't remember the details now.


  • Trolleybus Mechanic

    @blakeyrat said:

    Dear Hustler, I never thought the stories you publish were true until something similar happened to me! I was sitting at a bus stop, and up walks...
     

    This guy, and he says. "I never thought the stories Hustler published were true, until something simliar happened to me! I was sitting at a bus stop, and up walks..."

    [i]Editing spelling. Though sitting at "a bust stop" would have worked[/i]


  • BINNED

    @Lorne Kates said:

    Though sitting at "a bust stop" would have worked
    That would depend on what type of bust, wouldn't it?



  • @blakeyrat said:

    @curtmack said:
    True story: Lua (a scripting language designed for easy incorporation into other programs) has a limit to how many functions you can create. I know this because...

    @hallo.amt said:

    At university we tried to parse Java 1.5. The parser was generated by ANTLR which usually works fine. But when we tried to adapt the grammar to C#...

    Dear Hustler, I never thought the stories you publish were true until something similar happened to me! I was sitting at a bus stop, and up walks...

    IT WAS YOU AT THE BUS STOP???? I HAVE A VIDEO


  • Trolleybus Mechanic

    @Speakerphone Dude said:

    @blakeyrat said:
    Dear Hustler, I never thought the stories you publish were true until something similar happened to me! I was sitting at a bus stop, and up walks...

    IT WAS YOU AT THE BUS STOP???? I HAVE A VIDEO

     

    If you don't walk up to someone at a bustop and show them that video in 7 days, you will die.

     



  • @Lorne Kates said:

    @Speakerphone Dude said:

    @blakeyrat said:
    Dear Hustler, I never thought the stories you publish were true until something similar happened to me! I was sitting at a bus stop, and up walks...

    IT WAS YOU AT THE BUS STOP???? I HAVE A VIDEO

     

    If you don't walk up to someone at a bustop and show them that video in 7 days, you will die.

     

    It's not that bad then (I'm ok as long as it's other people that suffer or die). If I had to do myself the weird stuff that the people in the video are doing, it would have been a different story. I have nothing against dogs, midgets, car batteries, sand paper and nutella individually, but I know now that there are some ways to combine them that I am not comfortable with.



  • @ender said:

    This isn't a Gentoo WTF, but autotools WTF IIRC. For some reason, certain configure scripts try to figure out how deeply you can nest directories. And on some filesystems, you can nest really really deep - and there's no cutoff in configure (IIRC, it took around 40 minutes before the limit was hit).

    Autotools isn't a WTF in the usual direct way; rather, it's a create-your-own-WTF kit. It sort-of fits in with its concept and goal to have a way to deduce how deeply directories can nest. The WTF comes if someone actually uses it ;)

    (Annoyingly, they removed support for asking whether the OS supports #! lines, which I was actually using, in an attempt to create a project that ran on both Linux and DOS. There's a bash port for DOS, so it's possible to run autoconf on it, breaking their assumption that any system that would even be able to run autoconf would support them by now.)


Log in to reply