• 4 Posts
  • 460 Comments
Joined 11 months ago
cake
Cake day: May 10th, 2024

help-circle
  • I’ve got good news for you: Storage is now unbelievably cheap compared to just a few years ago.

    I’ve forgotten what deleting a file even means.

    Years ago when I started ripping CDs people called me an idiot for not using MP3 instead of flac. They aren’t laughing now. I fully admit that MP3 can be transparent at high bitrates and modern codecs even more so but that’s for the end device (like my car or phone) not archival.

    The same will be true with my Blu Ray collection stored as decrypted ISO files… I hope.




















  • The only way to make Rust segfault is by performing unsafe operations.

    Challange accepted. The following Rust code technically segfaults:

    fn stackover(a : i64) -> i64 {
        return stackover(a);
    }
    
    
    fn main() {
        println!("{}", stackover(100));
    }
    

    A stack overflow is technically a segmentation violation. At least on linux the program recives the SIGSEGV signal. This compiles and I am no rust dev but this does not use unsafe code, right?

    While the compiler shows a warning, the error message the program prints when run is not very helpfull IMHO:

    thread 'main' has overflowed its stack
    fatal runtime error: stack overflow
    [1]    45211 IOT instruction (core dumped)  ../target/debug/rust
    

    Edit: Even the compiler warning can be tricked by making it do recusion in pairs:

    fn stackover_a(a : i64) -> i64 {
        return stackover_b(a);
    }
    
    fn stackover_b(a : i64) -> i64 {
        return stackover_a(a);
    }
    
    fn main() {
        println!("{}", stackover_a(100));
    }