Do you create new session or load it from the data base?
I had similar issue (can't say it was exactly the same) that was caused by incompatible session snapshots in db, unfortunately could not find out what was the root of the incompatibility but after creating session instead of loading resolved the problem.
I answer to my own question. In my code, to avoid to dipose the session "manually", I manage the afterProcessCompleted event:
public void afterProcessCompleted(ProcessCompletedEvent event)
// Dispose the session.
// Commented with JBPM 5.2
That turns to null the session.
With JBPM 5.2, after the process is completed, the InternalKnowledgeRuntime.endOperation is executed, soi a NPE is thrown.