Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics

Dashboard
Notifications
Mark all as read
Challenges

Bytes to Segfault

+5
−0

Challenge

Cause the currently running program to receive the SIGSEGV signal (on Linux or other *nix systems) as fast as possible. What it does with the signal doesn't matter as long as it receives it.

This is code golf, smallest answer in each language wins. Some languages will have a tougher time than others. Keep in mind that if you depend on uninitalized data, it needs to always result in a segfault; a 0.000001% chance to not work invalidates your solution.

Example program

#include <stddef.h>
#include <stdio.h>

int main() {
    int* ohno = NULL;
    printf("%d", *ohno);
}
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

0 comments

7 answers

+4
−0

C, 5 bytes

main;

This exploits the fact that uninitialised globals live in the .bss section, and that section is not executable. So any attempt to execute code there, regardless of content, will cause a segfault.

Why does this post require moderator attention?
You might want to add some details to your flag.

2 comments

Actually, I think even just main; works (since return type defaults to int). Sisyphus‭ 5 months ago

@Sisyphus Thanks! I'll edit my entry. Chris Jester-Young‭ 5 months ago

+3
−0

Python 2, 13 bytes

exec'+1'*5**9

Try it online!

No idea why this works. Something in the Python expression parser?

Why does this post require moderator attention?
You might want to add some details to your flag.

2 comments

How did you find this? :D Dion‭ 5 months ago

Python tries to evaluate while parsing, and I guess it can't handle something that big. user‭ about 6 hours ago

+2
−0

C, 16 bytes

m(){*(int*)m=0;}

Try it Online!

Why does this post require moderator attention?
You might want to add some details to your flag.

1 comment

I think this is kind of cheating since that online compiler declares a main() elsewhere. Otherwise you could improve it to m(){m();}, 9 bytes, a recursive call that will eventually stack overflow with seg fault Lundin‭ 5 months ago

+2
−0

Rust 1.0.0, 58 53 52 37 bytes

fn a(){#[no_mangle]static mmap:u8=0;}
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comments

+1
−0

Bash, 11

kill -11 $$

Try it online!

Why does this post require moderator attention?
You might want to add some details to your flag.

0 comments

+1
−0

C (compliant), 19 bytes

(gcc -std=c18 -pedantic-errors)

int main(){main();}

Godbolt

Why does this post require moderator attention?
You might want to add some details to your flag.

0 comments

+1
−0

JavaScript (Node.js), 35 32 25 bytes

-7 bytes thanks to @celtschk‭

with(process)kill(pid,11)

Try it online!

Why does this post require moderator attention?
You might want to add some details to your flag.

1 comment

You can save 7 bytes by replacing 'SIGSEGV' with 11 (the signal number of SIGSEGV). celtschk‭ 5 months ago

Sign up to answer this question »

This community is part of the Codidact network. We have other communities too — take a look!

You can also join us in chat!

Want to advertise this community? Use our templates!