I2P Deadlock detected in RouterClock
Recently my router locked up and became completely unresponsive. It didn't even respond to ctrl-c, had to kill-9 the route process. I checked the logs and saw:
2022/08/03 20:56:58.189 | CRIT [...eTimer2 5/6] ...DeadlockDetector: Deadlock detected, please report
Thread 0:"Timestamper" daemon prio=1 Id=15 BLOCKED on net.i2p.router.RouterClock@6a14be94 owned by "UDPPktHandler 10/12" Id=9133
at app//net.i2p.router.RouterClock.setOffset(RouterClock.java:112)
- blocked on net.i2p.router.RouterClock@6a14be94
at app//net.i2p.router.RouterClock.setOffset(RouterClock.java:104)
at app//net.i2p.router.RouterClock.setNow(RouterClock.java:238)
at app//net.i2p.router.time.RouterTimestamper.stampTime(RouterTimestamper.java:335)
at app//net.i2p.router.time.RouterTimestamper.queryTime(RouterTimestamper.java:316)
at app//net.i2p.router.time.RouterTimestamper.run(RouterTimestamper.java:186)
at java.base@18.0.1.1/java.lang.Thread.run(Thread.java:833)
at app//net.i2p.util.I2PThread.run(I2PThread.java:103)
Stack Trace:
at app//net.i2p.router.RouterClock.setOffset(RouterClock.java:112)
at app//net.i2p.router.RouterClock.setOffset(RouterClock.java:104)
at app//net.i2p.router.RouterClock.setNow(RouterClock.java:238)
at app//net.i2p.router.time.RouterTimestamper.stampTime(RouterTimestamper.java:335)
at app//net.i2p.router.time.RouterTimestamper.queryTime(RouterTimestamper.java:316)
at app//net.i2p.router.time.RouterTimestamper.run(RouterTimestamper.java:186)
at java.base@18.0.1.1/java.lang.Thread.run(Thread.java:833)
at app//net.i2p.util.I2PThread.run(I2PThread.java:103)
Thread 1:"UDPPktHandler 10/12" daemon prio=9 Id=9133 BLOCKED on java.lang.Object@1b2f4425 owned by "JobQueuePumper" Id=31
at app//net.i2p.router.JobQueue.updateJobTimings(JobQueue.java:670)
- blocked on java.lang.Object@1b2f4425
at app//net.i2p.router.JobQueue.access$900(JobQueue.java:45)
at app//net.i2p.router.JobQueue$QueuePumper.offsetChanged(JobQueue.java:640)
at app//net.i2p.util.Clock.fireOffsetChanged(Clock.java:221)
at app//net.i2p.router.RouterClock.setOffset(RouterClock.java:214)
- locked net.i2p.router.RouterClock@6a14be94
at app//net.i2p.router.RouterClock.setOffset(RouterClock.java:96)
at app//net.i2p.router.transport.udp.PacketHandler$Handler.handlePacket(PacketHandler.java:598)
at app//net.i2p.router.transport.udp.PacketHandler$Handler.receivePacket(PacketHandler.java:336)
...
Stack Trace:
at app//net.i2p.router.JobQueue.updateJobTimings(JobQueue.java:670)
at app//net.i2p.router.JobQueue.access$900(JobQueue.java:45)
at app//net.i2p.router.JobQueue$QueuePumper.offsetChanged(JobQueue.java:640)
at app//net.i2p.util.Clock.fireOffsetChanged(Clock.java:221)
at app//net.i2p.router.RouterClock.setOffset(RouterClock.java:214)
at app//net.i2p.router.RouterClock.setOffset(RouterClock.java:96)
at app//net.i2p.router.transport.udp.PacketHandler$Handler.handlePacket(PacketHandler.java:598)
at app//net.i2p.router.transport.udp.PacketHandler$Handler.receivePacket(PacketHandler.java:336)
at app//net.i2p.router.transport.udp.PacketHandler$Handler.handlePacket(PacketHandler.java:285)
at app//net.i2p.router.transport.udp.PacketHandler$Handler.run(PacketHandler.java:219)
at java.base@18.0.1.1/java.lang.Thread.run(Thread.java:833)
at app//net.i2p.util.I2PThread.run(I2PThread.java:103)
Thread 2:"JobQueuePumper" daemon prio=9 Id=31 BLOCKED on net.i2p.router.RouterClock@6a14be94 owned by "UDPPktHandler 10/12" Id=9133
at app//net.i2p.router.RouterClock.notifyMassive(RouterClock.java:310)
- blocked on net.i2p.router.RouterClock@6a14be94
at app//net.i2p.router.RouterClock.now(RouterClock.java:271)
at app//net.i2p.router.JobImpl.madeReady(JobImpl.java:54)
at app//net.i2p.router.JobQueue$QueuePumper.run(JobQueue.java:577)
- locked java.lang.Object@1b2f4425
at java.base@18.0.1.1/java.lang.Thread.run(Thread.java:833)
at app//net.i2p.util.I2PThread.run(I2PThread.java:103)
Stack Trace:
at app//net.i2p.router.RouterClock.notifyMassive(RouterClock.java:310)
at app//net.i2p.router.RouterClock.now(RouterClock.java:271)
at app//net.i2p.router.JobImpl.madeReady(JobImpl.java:54)
at app//net.i2p.router.JobQueue$QueuePumper.run(JobQueue.java:577)
at java.base@18.0.1.1/java.lang.Thread.run(Thread.java:833)
at app//net.i2p.util.I2PThread.run(I2PThread.java:103)
After reporting, please restart your router!