Recurring OpenHAB crashes

Set-up

  • Platform information:
    • Hardware: RPi4
    • OS: openSUSE Leap 15.3
    • Java Runtime Environment: OpenJDK Runtime Environment Zulu11.48+21-CA (build 11.0.11+9-LTS)
    • openHAB version: 3.3.0 (started occurring with 3.1.0)

Issue

About two months ago OpenHAB started to crash regularly, eventually causing hardware watchdog reboots (I haven’t checked if those are due to the dog not being tickled or high load or what). I have now, as far as I can tell, narrowed down the problem to this:

13:13:15.070 [WARN ] [ommon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: 
java.lang.InternalError: a fault occurred in a recent unsafe memory access operation in compiled Java code
        at org.rrd4j.core.RrdPrimitive.writeDouble(RrdPrimitive.java:73) ~[?:?]
        at org.rrd4j.core.RrdDoubleMatrix.set(RrdDoubleMatrix.java:19) ~[?:?]
        at org.rrd4j.core.RobinMatrix.store(RobinMatrix.java:46) ~[?:?]
        at org.rrd4j.core.Archive.finalizeStep(Archive.java:194) ~[?:?]
        at org.rrd4j.core.Archive.archive(Archive.java:139) ~[?:?]
        at org.rrd4j.core.RrdDb.archive(RrdDb.java:1105) ~[?:?]
        at org.rrd4j.core.Datasource.process(Datasource.java:183) ~[?:?]
        at org.rrd4j.core.RrdDb.store(RrdDb.java:976) ~[?:?]
        at org.rrd4j.core.Sample.update(Sample.java:194) ~[?:?]
        at org.openhab.persistence.rrd4j.internal.RRD4jPersistenceService.store(RRD4jPersistenceService.java:198) ~[?:?]
        at org.openhab.core.persistence.internal.PersistItemsJob.run(PersistItemsJob.java:60) ~[?:?]
        at org.openhab.core.internal.scheduler.CronSchedulerImpl.lambda$0(CronSchedulerImpl.java:62) ~[?:?]
        at org.openhab.core.internal.scheduler.CronSchedulerImpl.lambda$1(CronSchedulerImpl.java:69) ~[?:?]
        at org.openhab.core.internal.scheduler.SchedulerImpl.lambda$12(SchedulerImpl.java:191) ~[?:?]
        at org.openhab.core.internal.scheduler.SchedulerImpl.lambda$1(SchedulerImpl.java:88) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
        at java.lang.Thread.run(Thread.java:829) [?:?]

From looking at different instances of the above error, scattered all over the logs, the common denominator seems to be:

at org.openhab.persistence.rrd4j.internal.RRD4jPersistenceService.store(RRD4jPersistenceService.java:198)

This was occurring with 3.1.x, but after upgrading to the 3.3.0 RPM today, I still see these crashes (even though they don’t seem to have caused a watchdog reboot yet).

I have discarded SD card or memory issues by cloning the card and running it on a different RPi4 unit.

Any ideas?

It’s a java-internal memory access error I’ve never seen before.
If I was to guess it’s because of your OS/Java combo, you’re probably the only person to have ever used that. I suggest you move to openHABian instead.

Thanks for confirming it’s not OpenHAB code (I had a suspicion it wasn’t). It appears to have been an incompatibility between the installed Java version and an OS update. I upgraded the Java package and the problem went away.

Why do you use such an exotic OS ? It’s just creating a need to solve problems you would not have or others had before you and solved them for you if you went with the standard, openHABian that is.

I would hardly call OpenSUSE an “exotic” OS.

On Raspi, definitely so. Anything but Raspi OS is there.
Make yourself aware what you see is effects of that choice.