Doing system-wide profiling of a large Java application, a user intermittently encountered problems with opjitconv not processing all JIT dump files, and operf displays the message
JIT dump processing exited abnormally: 1
Passing "--verbose=debug" to operf allowed us to collect detailed information on the JIT conversion process. In the log, we see the following error:
record past end of file JIT convert error -1
I believe the "record past end of file" error is due to a timing problem between the Java process writing to its JIT dump file (via the oprofile Java agent library) and the operf JIT conversion process copying the same JIT dump file before begining its conversion process. There is no synchronization between the two processes to ensure that JIT dump records written by the Java process are complete and coherent. Thus, the opjitconv process may read a record header to get the record length and find that this length would go past the end of the file (which it had copied from the original).