{"record":{"id":"01b31882461a0feb","repo":"mono/mono","slug":"available-options-handle-sigint-keep-delegate","errorCode":null,"errorMessage":"Available options: 'handle-sigint', 'keep-delegates', 'reverse-pinvoke-exceptions', 'collect-pagefault-stats', 'break-on-unverified', 'no-gdb-backtrace', 'suspend-on-native-crash', 'suspend-on-sigsegv', 'suspend-on-exception', 'suspend-on-unhandled', 'dont-free-domains', 'dyn-runtime-invoke', 'gdb', 'explicit-null-checks', 'gen-seq-points', 'no-compact-seq-points', 'single-imm-size', 'init-stacks', 'casts', 'soft-breakpoints', 'check-pinvoke-callconv', 'use-fallback-tls', 'debug-domain-unload', 'partial-sharing', 'align-small-structs', 'native-debugger-break', 'thread-dump-dir=DIR', 'no-verbose-gdb', 'llvm_disable_inlining', 'llvm-disable-self-init', 'llvm-disable-implicit-null-checks', 'weak-memory-model'.\n","messagePattern":"Available options: 'handle-sigint', 'keep-delegates', 'reverse-pinvoke-exceptions', 'collect-pagefault-stats', 'break-on-unverified', 'no-gdb-backtrace', 'suspend-on-native-crash', 'suspend-on-sigsegv', 'suspend-on-exception', 'suspend-on-unhandled', 'dont-free-domains', 'dyn-runtime-invoke', 'gdb', 'explicit-null-checks', 'gen-seq-points', 'no-compact-seq-points', 'single-imm-size', 'init-stacks', 'casts', 'soft-breakpoints', 'check-pinvoke-callconv', 'use-fallback-tls', 'debug-domain-unload', 'partial-sharing', 'align-small-structs', 'native-debugger-break', 'thread-dump-dir=DIR', 'no-verbose-gdb', 'llvm_disable_inlining', 'llvm-disable-self-init', 'llvm-disable-implicit-null-checks', 'weak-memory-model'\\.\n","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"mono/mini/mini-runtime.c","lineNumber":4094,"sourceCode":"{\n\tchar *options = g_getenv (\"MONO_DEBUG\");\n\tgchar **args, **ptr;\n\n\tif (!options)\n\t\treturn;\n\n\targs = g_strsplit (options, \",\", -1);\n\tg_free (options);\n\n\tfor (ptr = args; ptr && *ptr; ptr++) {\n\t\tconst char *arg = *ptr;\n\n\t\tif (!mini_parse_debug_option (arg)) {\n\t\t\tfprintf (stderr, \"Invalid option for the MONO_DEBUG env variable: %s\\n\", arg);\n\t\t\t// test-tailcall-require is also accepted but not documented.\n\t\t\t// empty string is also accepted and ignored as a consequence\n\t\t\t// of appending \",foo\" without checking for empty.\n\t\t\tfprintf (stderr, \"Available options: 'handle-sigint', 'keep-delegates', 'reverse-pinvoke-exceptions', 'collect-pagefault-stats', 'break-on-unverified', 'no-gdb-backtrace', 'suspend-on-native-crash', 'suspend-on-sigsegv', 'suspend-on-exception', 'suspend-on-unhandled', 'dont-free-domains', 'dyn-runtime-invoke', 'gdb', 'explicit-null-checks', 'gen-seq-points', 'no-compact-seq-points', 'single-imm-size', 'init-stacks', 'casts', 'soft-breakpoints', 'check-pinvoke-callconv', 'use-fallback-tls', 'debug-domain-unload', 'partial-sharing', 'align-small-structs', 'native-debugger-break', 'thread-dump-dir=DIR', 'no-verbose-gdb', 'llvm_disable_inlining', 'llvm-disable-self-init', 'llvm-disable-implicit-null-checks', 'weak-memory-model'.\\n\");\n\t\t\texit (1);\n\t\t}\n\t}\n\n\tg_strfreev (args);\n}\n\nMonoDebugOptions *\nmini_get_debug_options (void)\n{\n\treturn &mini_debug_options;\n}\n\nstatic gpointer\nmini_create_ftnptr (MonoDomain *domain, gpointer addr)\n{\n#if defined(PPC_USES_FUNCTION_DESCRIPTOR)\n\tgpointer* desc = NULL;","sourceCodeStart":4076,"sourceCodeEnd":4112,"githubUrl":"https://github.com/mono/mono/blob/0f53e9e151d92944cacab3e24ac359410c606df6/mono/mini/mini-runtime.c#L4076-L4112","documentation":"This is the companion usage message printed immediately after error 142 ('Invalid option for the MONO_DEBUG env variable'). It enumerates every token that mini_parse_debug_option() recognizes as valid. It is not triggered independently — it always follows the invalid-option error as a guidance banner. The list is the authoritative source of valid MONO_DEBUG options for the installed Mono build: it includes handle-sigint, keep-delegates, reverse-pinvoke-exceptions, collect-pagefault-stats, break-on-unverified, gdb, explicit-null-checks, gen-seq-points, and many more. Two undocumented acceptances exist per source comments: 'test-tailcall-require' and the empty string from trailing commas.","triggerScenarios":"Always co-emitted with error 142. It appears whenever any token in the comma-separated MONO_DEBUG value fails to match a recognized option. It will never appear on its own.","commonSituations":"Seen whenever a developer mistypes or uses an invalid MONO_DEBUG option; the list serves as the in-band help text so the developer can correct the value without consulting external documentation.","solutions":["Use the printed list as your reference: choose the correct option name and update your MONO_DEBUG value accordingly (see error 142 solutions).","If the option you need is not in this list, it may belong to a different variable — check MONO_GC_PARAMS (error 146) or MONO_GC_DEBUG (error 147) instead."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["This message is informational guidance emitted alongside error 142; preventing it means preventing error 142 — validate all MONO_DEBUG tokens before launch.","Keep the printed options list as a reference card in your project's ops documentation so developers don't need to trigger the error to discover valid options."],"tags":["mono","debug","env-var","usage-help","configuration"],"backgroundTag":null,"analyzedSha":"0f53e9e151d92944cacab3e24ac359410c606df6","analyzedAt":"2026-08-13T18:54:37.190Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}