Skip to content

Over-specialization #54

@caballa

Description

@caballa

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    limitationCurrent limitations of OCCAM

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions