---
# System prepended metadata

title: Teku 25.9.0 upgrade incident
tags: [incident-report]

---

# Teku 25.9.0 upgrade incident

When upgrading to Teku 25.9.0, several users reported that they were no longer able to participate in duties.

## Log evidence
The logs showed duties were not being performed. On one node we were able to see an exception

```
...
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy
	at tech.pegasys.teku.networking.eth2.gossip.encoding.SnappyBlockCompressor.compress(SnappyBlockCompressor.java:54) ~[teku-networking-eth2-25.9.0.jar:25.9.0]
	at tech.pegasys.teku.networking.eth2.gossip.encoding.SszSnappyEncoding.encode(SszSnappyEncoding.java:38) ~[teku-networking-eth2-25.9.0.jar:25.9.0]
	at tech.pegasys.teku.networking.eth2.gossip.subnets.AttestationSubnetSubscriptions.lambda$gossip$0(AttestationSubnetSubscriptions.java:90) ~[teku-networking-eth2-25.9.0.jar:25.9.0]
	at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187) ~[?:?]
	... 46 more
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.UnsatisfiedLinkError: /tmp/snappy-1.1.10-2ffe9e25-4684-44ae-80eb-bbb84ab6689a-libsnappyjava.so: libc.musl-x86_64.so.1: cannot open shared object file: No such file or directory [in thread "GossipRouter-event-thread-0"]
...

```

## Root cause

This tracked back to a snappy change that was included in release `org.xerial.snappy:snappy-java:1.1.10.8`, https://github.com/xerial/snappy-java/pull/632

This change is determining libraries to load, and detecting musl based on the existence of a file: `/lib/ld-musl-x86_64.so.1`

After detection, it was observed that it would attempt to load a different file: `/lib/libc.musl-x86_64.so.1`.

This file is not present in a node that is based on ubuntu and has grafana installed, which is a reasonable representation of solo stakers potentially.

## Possible solutions

### work around the issue

Investigated keeping this point release. This would ultimately require that users faced with this problem install `musl-dev` and create a softlink manually. This seems like a sub-optimal fix.

### Re-release on the old snappy
Downgrading snappy seems like the 'right' fix.

Raised PR to downgrade: https://github.com/Consensys/teku/pull/9839
Raised Issue on snappy: https://github.com/xerial/snappy-java/issues/692

We will release 25.9.1 with the downgraded snappy to mitigate this issue.

## Advice

If you are looking to upgrade to Teku 25.9.0, check for the files:
```
ls -l /lib/libc.musl-x86_64.so.1 /usr/lib/ld-musl-x86_64.so.1
```

If you have both of these files, or neither, you will be fine to use the 25.9.0 release.

If you have only got `/usr/lib/ld-musl-x86_64.so.1`, then you should defer upgrading until Teku 25.9.1 is made available.