This happend to me right noww as I tried to write a gui task manager for the GNU/Linux OS

  • Hupf@feddit.org
    link
    fedilink
    arrow-up
    19
    ·
    3 months ago

    My first programming related memory is of the QBasic interpreter.

    I had written some code I was quite happy with, but not saved it yet. As part of a subroutine for sound output, I quickly wrote a loop from 20 to 20000 to output a test signal over 1 second each with that frequency via the PC speaker and hit execute.

    Realizing my mistake, It being MS-DOS and thus single-threaded, I couldn’t Ctrl+C out of it without killing QBasic altogether and losing my code. I couldn’t turn town the PC speaker.

    I ended up closing various doors between the PC and me and waiting it out.

    • N3Cr0@lemmy.world
      link
      fedilink
      arrow-up
      6
      ·
      3 months ago

      rm -rf <some placeholder>

      Works for . current directory. Yay!

      … also works for / system root. 🔥 Nay!

        • N3Cr0@lemmy.world
          link
          fedilink
          arrow-up
          1
          ·
          3 months ago

          It should, but I the end it depends on your system. Each distro has their own default behavior.

      • CameronDev@programming.dev
        link
        fedilink
        arrow-up
        3
        ·
        3 months ago

        That won’t crash your kernel, and I was more curious about the OPs example. Task management is basically reading some files, and sending signals, it should be near impossible to crash the system.

          • CameronDev@programming.dev
            link
            fedilink
            arrow-up
            1
            ·
            3 months ago

            Kernel shouldn’t crash, and anything running in memory will be okayish, but it definitely will get less and less stable. It won’t be possible to start new processes.

            I have a Linux install on a USB SSD with a flakey connection, if I bumped the cord the root would unmount. It was fairly resilient, but graphics would slowly start disappearing. I’m fairly sure I could cleanly reboot as long as I had a terminal open, but its been a while, so maybe I’m misremembering.

            Still, the overall system becomes pretty useless, so i guess its fair to call it a crash

        • bi_tux@lemmy.worldOP
          link
          fedilink
          arrow-up
          16
          arrow-down
          1
          ·
          3 months ago

          it didn’t crash the kernel, it just killed every process that isn’t run by the root user, which kind of feels like a crash

          • CameronDev@programming.dev
            link
            fedilink
            arrow-up
            4
            ·
            3 months ago

            Ah, that definitely would feel like a crash. Sent kill signal to cgroup accidentally? Or just iterate over all processes and signal them all?

            • bi_tux@lemmy.worldOP
              link
              fedilink
              arrow-up
              6
              ·
              edit-2
              3 months ago

              probably the later, but idk how, all I did was insert a string in the following command like this:

              ``Command::new(“bash”)

              .arg(“-c”) .arg(format!(“ps -aux | grep -i "}" awk '{{print $2}’ | xagrs kill -9”, input)

              .output()

              .expect(“error”);``

              I’ve tested the command and it worked flawlessly in the terminal, but I have no idea what I’m doing, since I’m new to rust and never worked with this library

              • CameronDev@programming.dev
                link
                fedilink
                arrow-up
                6
                ·
                3 months ago

                There are rust libraries to send signals, might be better to use those rather than calling bash. eg. https://docs.rs/nix/latest/nix/sys/signal/index.html

                I’m guessing if input was “”, then it would sigkill all processes? Less confident, but some functions behave slightly differently in an interactive console vs a non interactive, maybe ps has a different format when used non interactively?

                Aside, you want three backticks and a newline to get code formatting :)
                
                • bi_tux@lemmy.worldOP
                  link
                  fedilink
                  arrow-up
                  5
                  ·
                  edit-2
                  3 months ago

                  thx, btw I figured it out:

                  I forgot to trimm the string, so it had a line break in it which lead to grep showing the processes from the term I put in + all processes that contain a space/linebreak and appearently all processes shown by ps aux contain some kind of space (makes sense, since there are spaces between the user, pid, etc) so yeah, I ended up trying to kill every process on the system, but it only killed the user processes, since I ran everything without sudo

        • ulterno@lemmy.kde.social
          link
          fedilink
          English
          arrow-up
          2
          ·
          3 months ago

          There’s this game “HyperRougue”. Run it on Arch.

          hyperrogue-git version 13.0d.r60.g27fb2d92-1

          Go to settings -> 3D configuration -> projection -> projection type -> . Cycle through the projection types. One of them causes something good enough to call a crash.

          I don’t remember anymore if it was just a display driver crash or a kernel crash and I haven’t updated to a newer version (which might have fixed it).

            • ulterno@lemmy.kde.social
              link
              fedilink
              English
              arrow-up
              1
              ·
              3 months ago

              Doesn’t even startup on my box,

              It needs to startup and then go to that point (after you select the projection) to cause the crash.
              It definitely caused something other than the application to get into an invalid state. Which is why I am apprehensive about trying it out again to answer your comment. Probably was the display driver, which is why it didn’t just turn off after that.

    • bi_tux@lemmy.worldOP
      link
      fedilink
      arrow-up
      53
      arrow-down
      1
      ·
      3 months ago

      Do you know the definition of insanity?

      do you know software developers?

      • littlewonder@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        3 months ago

        Then you breathe a sigh of relief, merge it with a comment of “bug fix”, write no documentation–especially about how it failed testing, and quit the gig during the inevitable helpdesk explosion; walking away from the fireball like the Michael Bay maniac you are.

  • deegeese@sopuli.xyz
    link
    fedilink
    arrow-up
    28
    ·
    3 months ago

    This is why VM snapshotting is so valuable.

    My IDE is my real workstation, and it hosts a VM in which I can plop some code, run it, crash, revert and try again.

  • ulterno@lemmy.kde.social
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    3 months ago

    What language were you using?
    Python maybe? I don’t know of any other interpreted language, that you may be calling system commands from, without saving to disk

    I use C and C++ and my IDEs save to disk before compiling. Makes sense to not try compiling when there are potentially 2 versions (one on RAM or /tmp and one on Disk) and the build system might be running multiple commands, which the IDE may/may not know of, in my case.