Understand the failure.
Verify the repair.
Small, reproducible software failures. The broken implementation, the fix that didn’t work, and the one that passed—preserved together.
Explore the cases ↓How results are verified ↗WHAT THE ARCHIVE CONTAINS
100840 executable cases. 20168 are open.
Every case records the implementation that fails, the fix that did not work, and the repair that passed its checks—with recorded outputs and source hashes. This release adds 100840 cases across 20168 failure mechanisms and 254 domains.
The open tier gives you the failure and the unsuccessful fix for one case in every mechanism. The remaining 80672 cases, 5 variants per mechanism, are member-only: the verified repair, its recorded checks, and the full fixture suite are held in the member archive. Read the methodology ↗
A RECORD OF WHAT WENT WRONG
Browse the archive / 100840
Line table: no-line marker shifts subsequent lines · case 01
Every line after an artificial no-line instruction is 128 lower than it should be.
Line table: no-line marker shifts subsequent lines · case 02
Every line after an artificial no-line instruction is 128 lower than it should be.
Line table: no-line marker shifts subsequent lines · case 03
Every line after an artificial no-line instruction is 128 lower than it should be.
Line table: no-line marker shifts subsequent lines · case 04
Every line after an artificial no-line instruction is 128 lower than it should be.
Line table: no-line marker shifts subsequent lines · case 05
Every line after an artificial no-line instruction is 128 lower than it should be.
Line table: address deltas read as bytes instead of code units · case 01
Line boundaries land at half the correct byte offsets.
Line table: address deltas read as bytes instead of code units · case 02
Line boundaries land at half the correct byte offsets.
Line table: address deltas read as bytes instead of code units · case 03
Line boundaries land at half the correct byte offsets.
Line table: address deltas read as bytes instead of code units · case 04
Line boundaries land at half the correct byte offsets.
Line table: address deltas read as bytes instead of code units · case 05
Line boundaries land at half the correct byte offsets.
Line table: offsets before the first delta have no base entry · case 01
Instructions before the first table entry report the last line of the function.
Line table: offsets before the first delta have no base entry · case 02
Instructions before the first table entry report the last line of the function.
Line table: offsets before the first delta have no base entry · case 03
Instructions before the first table entry report the last line of the function.
Line table: offsets before the first delta have no base entry · case 04
Instructions before the first table entry report the last line of the function.
Line table: offsets before the first delta have no base entry · case 05
Instructions before the first table entry report the last line of the function.
Constant pool: Long and Double occupy one slot · case 01
Every reference after the first 8-byte constant resolves to its neighbour.
Constant pool: Long and Double occupy one slot · case 02
Every reference after the first 8-byte constant resolves to its neighbour.
Constant pool: Long and Double occupy one slot · case 03
Every reference after the first 8-byte constant resolves to its neighbour.
Constant pool: Long and Double occupy one slot · case 04
Every reference after the first 8-byte constant resolves to its neighbour.
Constant pool: Long and Double occupy one slot · case 05
Every reference after the first 8-byte constant resolves to its neighbour.
Constant pool: class names keep internal slashes · case 01
Resolved class names print as java/lang/String instead of java.lang.String.
Constant pool: class names keep internal slashes · case 02
Resolved class names print as java/lang/String instead of java.lang.String.
Constant pool: class names keep internal slashes · case 03
Resolved class names print as java/lang/String instead of java.lang.String.
Constant pool: class names keep internal slashes · case 04
Resolved class names print as java/lang/String instead of java.lang.String.
Constant pool: class names keep internal slashes · case 05
Resolved class names print as java/lang/String instead of java.lang.String.
Constant pool: member reference owner not required to be a Class · case 01
A malformed Methodref whose owner index names a Utf8 entry resolves instead of being rejected.
Constant pool: member reference owner not required to be a Class · case 02
A malformed Methodref whose owner index names a Utf8 entry resolves instead of being rejected.
Constant pool: member reference owner not required to be a Class · case 03
A malformed Methodref whose owner index names a Utf8 entry resolves instead of being rejected.
Constant pool: member reference owner not required to be a Class · case 04
A malformed Methodref whose owner index names a Utf8 entry resolves instead of being rejected.
Constant pool: member reference owner not required to be a Class · case 05
A malformed Methodref whose owner index names a Utf8 entry resolves instead of being rejected.
Constant pool: NameAndType renders descriptor before name · case 01
Member references print as "()I:length".
Constant pool: NameAndType renders descriptor before name · case 02
Member references print as "()I:length".
Constant pool: NameAndType renders descriptor before name · case 03
Member references print as "()I:length".
Constant pool: NameAndType renders descriptor before name · case 04
Member references print as "()I:length".
Constant pool: NameAndType renders descriptor before name · case 05
Member references print as "()I:length".
Constant pool: String constants accept any referenced entry · case 01
A String constant pointing at an Integer produces "47" instead of a resolution error.
Constant pool: String constants accept any referenced entry · case 02
A String constant pointing at an Integer produces "47" instead of a resolution error.
Constant pool: String constants accept any referenced entry · case 03
A String constant pointing at an Integer produces "47" instead of a resolution error.
Constant pool: String constants accept any referenced entry · case 04
A String constant pointing at an Integer produces "47" instead of a resolution error.
Constant pool: String constants accept any referenced entry · case 05
A String constant pointing at an Integer produces "47" instead of a resolution error.
Constant pool: Fieldref entries unresolvable · case 01
getfield/putfield operands resolve to bad-ref errors.
Constant pool: Fieldref entries unresolvable · case 02
getfield/putfield operands resolve to bad-ref errors.
Constant pool: Fieldref entries unresolvable · case 03
getfield/putfield operands resolve to bad-ref errors.
Constant pool: Fieldref entries unresolvable · case 04
getfield/putfield operands resolve to bad-ref errors.
Constant pool: Fieldref entries unresolvable · case 05
getfield/putfield operands resolve to bad-ref errors.
Method descriptors: arrays of long counted as two slots · case 01
Methods taking long[] or double[] parameters get oversized frames and shifted locals.
Method descriptors: arrays of long counted as two slots · case 02
Methods taking long[] or double[] parameters get oversized frames and shifted locals.
Method descriptors: arrays of long counted as two slots · case 03
Methods taking long[] or double[] parameters get oversized frames and shifted locals.
Method descriptors: arrays of long counted as two slots · case 04
Methods taking long[] or double[] parameters get oversized frames and shifted locals.
Method descriptors: arrays of long counted as two slots · case 05
Methods taking long[] or double[] parameters get oversized frames and shifted locals.
Method descriptors: instance methods lose the this slot · case 01
Local 0 of instance methods is assigned to the first declared parameter.
Method descriptors: instance methods lose the this slot · case 02
Local 0 of instance methods is assigned to the first declared parameter.
Method descriptors: instance methods lose the this slot · case 03
Local 0 of instance methods is assigned to the first declared parameter.
Method descriptors: instance methods lose the this slot · case 04
Local 0 of instance methods is assigned to the first declared parameter.
Method descriptors: instance methods lose the this slot · case 05
Local 0 of instance methods is assigned to the first declared parameter.
Method descriptors: void arrays accepted as return type · case 01
A descriptor returning [V loads as returning an array of void.
Method descriptors: void arrays accepted as return type · case 02
A descriptor returning [V loads as returning an array of void.
Method descriptors: void arrays accepted as return type · case 03
A descriptor returning [V loads as returning an array of void.
Method descriptors: void arrays accepted as return type · case 04
A descriptor returning [V loads as returning an array of void.
Method descriptors: void arrays accepted as return type · case 05
A descriptor returning [V loads as returning an array of void.
Method descriptors: empty object type name accepted · case 01
A parameter written as "L;" parses as a class with an empty name.
Method descriptors: empty object type name accepted · case 02
A parameter written as "L;" parses as a class with an empty name.
Method descriptors: empty object type name accepted · case 03
A parameter written as "L;" parses as a class with an empty name.
Method descriptors: empty object type name accepted · case 04
A parameter written as "L;" parses as a class with an empty name.
Method descriptors: empty object type name accepted · case 05
A parameter written as "L;" parses as a class with an empty name.
Method descriptors: garbage after the return type ignored · case 01
Descriptors with trailing characters after the return type are accepted.
Method descriptors: garbage after the return type ignored · case 02
Descriptors with trailing characters after the return type are accepted.
Method descriptors: garbage after the return type ignored · case 03
Descriptors with trailing characters after the return type are accepted.
Method descriptors: garbage after the return type ignored · case 04
Descriptors with trailing characters after the return type are accepted.
Method descriptors: garbage after the return type ignored · case 05
Descriptors with trailing characters after the return type are accepted.
Method descriptors: 255-dimensional arrays rejected · case 01
The maximum legal array depth is refused while the limit itself is enforced one too early.
Method descriptors: 255-dimensional arrays rejected · case 02
The maximum legal array depth is refused while the limit itself is enforced one too early.
Method descriptors: 255-dimensional arrays rejected · case 03
The maximum legal array depth is refused while the limit itself is enforced one too early.
Method descriptors: 255-dimensional arrays rejected · case 04
The maximum legal array depth is refused while the limit itself is enforced one too early.
Method descriptors: 255-dimensional arrays rejected · case 05
The maximum legal array depth is refused while the limit itself is enforced one too early.
Upvalues: each closure gets a private copy of a captured local · case 01
After the scope closes, writes through one closure are invisible to its sibling.
Upvalues: each closure gets a private copy of a captured local · case 02
After the scope closes, writes through one closure are invisible to its sibling.
Upvalues: each closure gets a private copy of a captured local · case 03
After the scope closes, writes through one closure are invisible to its sibling.
Upvalues: each closure gets a private copy of a captured local · case 04
After the scope closes, writes through one closure are invisible to its sibling.
Upvalues: each closure gets a private copy of a captured local · case 05
After the scope closes, writes through one closure are invisible to its sibling.
Upvalues: the slot at the closing level stays open · case 01
A closure keeps pointing at a stack slot that was popped and later reused.
Upvalues: the slot at the closing level stays open · case 02
A closure keeps pointing at a stack slot that was popped and later reused.
Upvalues: the slot at the closing level stays open · case 03
A closure keeps pointing at a stack slot that was popped and later reused.
Upvalues: the slot at the closing level stays open · case 04
A closure keeps pointing at a stack slot that was popped and later reused.
Upvalues: the slot at the closing level stays open · case 05
A closure keeps pointing at a stack slot that was popped and later reused.
Upvalues: closed upvalues lose their value · case 01
Closures read None from variables captured in a finished scope.
Upvalues: closed upvalues lose their value · case 02
Closures read None from variables captured in a finished scope.
Upvalues: closed upvalues lose their value · case 03
Closures read None from variables captured in a finished scope.
Upvalues: closed upvalues lose their value · case 04
Closures read None from variables captured in a finished scope.
Upvalues: closed upvalues lose their value · case 05
Closures read None from variables captured in a finished scope.
Upvalues: closed upvalues remain in the open list · case 01
A new closure over a reused slot binds to a dead variable's closed cell.
Upvalues: closed upvalues remain in the open list · case 02
A new closure over a reused slot binds to a dead variable's closed cell.
Upvalues: closed upvalues remain in the open list · case 03
A new closure over a reused slot binds to a dead variable's closed cell.
Upvalues: closed upvalues remain in the open list · case 04
A new closure over a reused slot binds to a dead variable's closed cell.
Upvalues: closed upvalues remain in the open list · case 05
A new closure over a reused slot binds to a dead variable's closed cell.
Upvalues: reads decide by slot existence instead of open state · case 01
A closure reads whatever local now occupies its old slot.
Upvalues: reads decide by slot existence instead of open state · case 02
A closure reads whatever local now occupies its old slot.
Upvalues: reads decide by slot existence instead of open state · case 03
A closure reads whatever local now occupies its old slot.
Upvalues: reads decide by slot existence instead of open state · case 04
A closure reads whatever local now occupies its old slot.
Upvalues: reads decide by slot existence instead of open state · case 05
A closure reads whatever local now occupies its old slot.
INSPECTABLE BY DESIGN
Every result has a runnable source.
Runnable implementations with recorded outputs, source hashes, and explicit contracts. Related variants share a failure mechanism and belong together in evaluation splits.
Read the methodology ↗