{"record":{"id":"479afbf27ddddf2e","repo":"oracle/graal","slug":"invalid-includevirtualthreads-setting-value-esp","errorCode":null,"errorMessage":"Invalid includevirtualthreads setting {value}. Espresso only supports n currently.","messagePattern":"Invalid includevirtualthreads setting (.+?)\\. Espresso only supports n currently\\.","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/EspressoOptions.java","lineNumber":460,"sourceCode":"                        host = inputHost;\n                        port = inputPort;\n                        break;\n                    case \"transport\":\n                        if (!\"dt_socket\".equals(value)) {\n                            throw new IllegalArgumentException(\"Invalid transport \" + value + \". Espresso only supports dt_socket currently.\");\n                        }\n                        transport = value;\n                        break;\n                    case \"server\":\n                        server = yesOrNo(key, value);\n                        break;\n                    case \"suspend\":\n                        suspend = yesOrNo(key, value);\n                        break;\n                    case \"includevirtualthreads\":\n                        boolean includevirtualthreads = yesOrNo(key, value);\n                        if (includevirtualthreads) {\n                            throw new IllegalArgumentException(\"Invalid includevirtualthreads setting \" + value + \". Espresso only supports n currently.\");\n                        }\n                        break;\n                    default:\n                        throw new IllegalArgumentException(\"Invalid JDWP option: \" + key + \". Supported options: 'transport', 'address', 'server', 'suspend', and 'includevirtualthreads=n'.\");\n                }\n            }\n            return new JDWPOptions(transport, host, port, server, suspend);\n        }\n    });\n\n    @Option(help = \"JDWP agent Options. e.g. -agentlib:jdwp=transport=dt_socket,server=y,address=localhost:8000,suspend=y\", //\n                    category = OptionCategory.EXPERT, //\n                    stability = OptionStability.STABLE, //\n                    usageSyntax = \"[transport=dt_socket],[server=y|n],[address=[<host>:]<port>,[suspend=y|n]]\") //\n    public static final OptionKey<JDWPOptions> JDWPOptions = new OptionKey<>(null, JDWP_OPTIONS_OPTION_TYPE);\n\n    @Option(help = \"Enable experimental java.lang.management APIs. Incur a bookkeeping overhead.\", //\n                    category = OptionCategory.EXPERT, //","sourceCodeStart":442,"sourceCodeEnd":478,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/EspressoOptions.java#L442-L478","documentation":"The JDWP 'includevirtualthreads' key is parsed with yesOrNo(), so 'n' is accepted, but the implementation then unconditionally rejects 'y': Espresso's JDWP backend cannot yet debug virtual threads, so enabling the setting is an error rather than silently ignored.","triggerScenarios":"--java.JDWPOptions=...,includevirtualthreads=y. (includevirtualthreads=n is accepted and does nothing.)","commonSituations":"Copy-pasting a JDK 21-style -agentlib:jdwp string that includes includevirtualthreads=y; IDE debugger profiles generated for recent HotSpot.","solutions":["Remove includevirtualthreads=y or set it to n.","Debug virtual-thread logic on platform threads until the Espresso version supports it.","Update debugger launch templates used for Espresso."],"exampleFix":"# before\n--java.JDWPOptions=transport=dt_socket,server=y,address=:8000,includevirtualthreads=y\n\n# after\n--java.JDWPOptions=transport=dt_socket,server=y,address=:8000,includevirtualthreads=n","handlingStrategy":"validation","validationCode":"if (opts.contains(\"includevirtualthreads=y\")) {\n    opts = opts.replace(\",includevirtualthreads=y\", \"\"); // strip before launch\n}","typeGuard":"static boolean virtualThreadsSupported(String jdwp) {\n    return !jdwp.matches(\"(?:.*,)?includevirtualthreads=y(?:,.*)?\");\n}","tryCatchPattern":null,"preventionTips":["Sanitize JDK21+ agentlib strings before passing to Espresso.","Keep a Espresso-specific debugger profile without virtual-thread flags."],"tags":["espresso","graalvm","jdwp","virtual-threads","debugging"],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}