OCCAM icon indicating copy to clipboard operation
OCCAM copied to clipboard

Over-specialization

Open caballa opened this issue 4 years ago • 1 comments

The configuration priming (CP) can produce too specialized programs that cannot be actually executed.

Recall that CP has two phases: bytecode interpretation and lifting LLVM values to LLVM constants. For the second phase, the lifting excludes pointer values to avoid overfitting but this is not sufficient.

There are system calls such as socket, getuid, etc which generate integers which should not be part of the specialized programs because they are not reusable across multiple executions. A similar issue raises when pointers are casted to integers and then those integers are also part of the specialized program. This can cause that the specialized binary accesses to memory allocated during configuration priming which is not available after.

Probably the solution is to modify configuration priming to lift a LLVM value only if the value is input-dependent.

caballa avatar Aug 02 '21 20:08 caballa

This limitation affects #48 , #50, #52, and #53

caballa avatar Aug 02 '21 21:08 caballa