When the JVM is stopped using SIGINT, Boot's shutdown hook runs and closes the application context. Class loading that occurs during this close processing may fail due to a thread being interrupted while calling FileChannel.read(ByteBuffer, long). The interruption causes the read to close the channel and fail with a ClosedByInterruptException. This leaves FileChannelDataBlock with a FileChannel that should be open according to its reference count but isn't.