diff --git a/src/gdb/GdbSessionManager.ts b/src/gdb/GdbSessionManager.ts index bba9c63fb9..2c49aa72ac 100644 --- a/src/gdb/GdbSessionManager.ts +++ b/src/gdb/GdbSessionManager.ts @@ -25,6 +25,7 @@ import type { import { DEBUGGER_CONTROL_REPLY_BYTES } from "../domain/analysisResourceLimits.js"; import { currentAnalysisOperationSnapshot } from "../domain/analysisOperationSnapshot.js"; import { err, ok, type Result } from "../domain/result.js"; +import { ConfigurationError } from "../domain/configurationErrors.js"; import { ProviderProcessSupervisor, spawnOwnedProviderProcess, @@ -1371,6 +1372,7 @@ export class GdbSessionManager { ); return ok({ result, evidence }); } catch (cause) { + if (cause instanceof ConfigurationError) return err(cause); if (cause instanceof AnalysisCancelledError) return err(cause); if (cause instanceof AnalysisCapabilityUnavailableError) return err(cause as AnalysisError); diff --git a/tests/boundary/providers/GdbSessionManagers.test.ts b/tests/boundary/providers/GdbSessionManagers.test.ts index b4fb056dd6..4af7d8668b 100644 --- a/tests/boundary/providers/GdbSessionManagers.test.ts +++ b/tests/boundary/providers/GdbSessionManagers.test.ts @@ -23,6 +23,12 @@ process.stdin.on("data", chunk => { } });`; +const debuggerDeadlineOverride = { + setting: "debugger.command_deadline_ms", + action: "set", + value: 5000, +} as const; + describe("persistent debugger session managers", () => { let directory: string | undefined; const fixtureOwner = createGdbFixtureOwner(); @@ -93,7 +99,7 @@ process.stdin.on("data", (chunk) => { 4096, ], ] as const)( - "honors a single override for invalid %s", + "restores a GDB session after resetting invalid %s", async (setting, environmentName, value) => { directory = await mkdtemp(join(tmpdir(), "rea-gdb-setting-")); const provider = join(directory, "fake-gdb.mjs"); @@ -108,6 +114,10 @@ process.stdin.on("data", (chunk) => { const set = () => settings.update({ changes: [{ setting, action: "set", value }] }); expect(set().ok).toBe(true); + if (setting === "debugger.max_command_output_bytes") + expect( + settings.update({ changes: [debuggerDeadlineOverride] }).ok, + ).toBe(true); const manager = new GdbSessionManager({ spawnProcess: fixtureOwner.spawnProcess, platform: "linux",