A segmentation fault (SIGSEGV, often printed as Segmentation fault (core dumped)) means a process tried to read, write, or execute memory that is not mapped for it, and the kernel terminated it on the spot. Unlike most errors on this site, the user at the keyboard did not cause it and cannot configure it away: it is a defect in the program's native code, a corrupted installation, an incompatible library, or, when many unrelated programs start crashing, failing hardware. The useful work is identifying which of those it is, with evidence.
dmesg | tail (or journalctl -k) shows the faulting address and instruction pointer; a fault at a near-zero address is the classic null-pointer bug in the program, while varying addresses across crashes suggest something less deterministic.coredumpctl on systemd systems lists captured cores; opening one with gdb program core and running bt shows the function stack at the crash, which is what a bug report needs and often names the responsible library.LD_LIBRARY_PATH pointing at incompatible libraries) in self-assembled setups.What does “core dumped” add? It records that the kernel saved the process's memory image for debugging. That file is how developers (and you, with gdb) see exactly where it crashed; it is evidence, not additional damage.
Why does the same program crash on one machine and not another? Different library versions, different data, or different hardware. A crash tied to one input is a program bug; a crash tied to one machine across inputs is that machine's libraries or hardware until proven otherwise.
Can a Python or Java program segfault? Their runtimes are native programs, so yes, through native extensions, JNI libraries, or runtime bugs; pure managed code alone almost never does. The fault then lives in the native layer named in the crash log (hs_err_pid files for the JVM).