this post was submitted on 20 Sep 2024
292 points (97.1% liked)

Programmer Humor

32712 readers
859 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
292
submitted 3 months ago* (last edited 3 months ago) by [email protected] to c/[email protected]
 

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

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 19 points 3 months ago (3 children)

How are you crashing your system?! Crashing program sure, but the entire system?

[–] [email protected] 21 points 3 months ago (1 children)

Try it out on your own system.

:(){
 :|:&
};:

It's totally possible

[–] [email protected] 10 points 3 months ago* (last edited 3 months ago) (2 children)

Doesn't explain OPs task management example. And won't crash the kernel, just make things unresponsive

[–] [email protected] 15 points 3 months ago (1 children)

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

[–] [email protected] 4 points 3 months ago (1 children)

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

[–] [email protected] 6 points 3 months ago* (last edited 3 months ago) (2 children)

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

[–] [email protected] 6 points 3 months ago (1 children)

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 :)
[–] [email protected] 5 points 3 months ago* (last edited 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

[–] [email protected] 2 points 3 months ago (1 children)

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).

[–] [email protected] 1 points 3 months ago (1 children)

Doesn't even startup on my box, but doesn't crash the kernel or system either, just regular application crash

[–] [email protected] 1 points 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.

[–] [email protected] 6 points 3 months ago (2 children)

rm -rf

Works for . current directory. Yay!

... also works for / system root. 🔥 Nay!

[–] [email protected] 4 points 3 months ago (1 children)

Does it? I thought / specifically was protected, and you needed to add --no-preserve-root.

[–] [email protected] 1 points 3 months ago

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

[–] [email protected] 3 points 3 months ago (1 children)

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.

[–] [email protected] 2 points 3 months ago (1 children)

I believe it does crash the system eventually as important buts start to go missing?

[–] [email protected] 1 points 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

[–] [email protected] 3 points 3 months ago (1 children)
[–] [email protected] 4 points 3 months ago* (last edited 3 months ago)

OPs example was task management, which doesn't require kernel modules.