Jinn: Synthesizing Dynamic Bug Detectors for Foreign Language Interfaces
Programming language specifications mandate static and dynamic analyses to preclude syntactic and semantic errors. Although individual languages are usually well-specified, composing languages is not, and this poor specification is a source of many errors in multilingual programs. For example, virtually all Java programs compose Java and C using the Java Native Interface (JNI). Since JNI is informally specified, developers have difficulty using it correctly, and current Java compilers and Virtual Machines (VMs) inconsistently check only a subset of JNI constraints.