Figured I'd attempt to help you out here too.. Rather than just be a dick about it >.>
Have you tried stack tracking this down properly to the root of the problem? If not then..
Locate the send Logout (or whatever it's called, the packet which logs the player out of the game) in the client and place stack-tracing there (I already tried this myself, caused some mask errors (they kick a player out immidiately just as you displayed) and it did indeed display stack-trace).
https://puu.sh/tms4T/45f748093e.png
(The line in red is what I printed out - I didn't print the line number on that test trial)
Code:
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
System.err.println(stackTraceElements[2].getClassName() + " - " + stackTraceElements[2].getMethodName() + " - " + stackTraceElements[2].getLineNumber());
Mess around with the integer 2 there (0 would simply return current thread, 1 returned the very method I was stacktracing it through.. 2 returned in the first class this was being caused by.. I assume it's going to be 2 for you too but who knows for sure).