"Why is that the case?" <- Because all executables in Haiku are technically shared libraries. The only difference that NULL entry point is allowed for shared libraries, but not for executables. Executable loading process is different from most UNIX-like systems: kernel do not load or even look at requested executable. Instead that kernel always load `runtime_loader` and pass startup parameters to it. `runtime_loader` internally do something like: ``` int main(int argc, char **argv) { void* image = dlopen(argv[0]); auto entryPoint = get_entry_point(image); if (entryPoint == NULL) showError(); return entryPoint(argc, argv); } ```