@chrisvest PTAL > Caused by: java.lang.IllegalStateException: This allocator has been **closed**.
>  	at io.netty5.buffer.api.internal.Statics.allocatorClosedException(Statics.java:268)
>  	at io.netty5.buffer.api.pool.PooledBufferAllocator.allocate(PooledBufferAllocator.java:316)
>  	at io.netty5.buffer.api.DefaultBufferAllocators$**UncloseableBufferAllocator**.allocate(DefaultBufferAllocators.java:129)

Quite the mystery, here… 🤔 

I'll take a look.
[netty 5] ByteToMessageDecoder tries to allocate from a closed allocator
### Expected behavior
ByteToMessageDecoder shouldn't try to allocate a buffer from a closed allocator.

### Actual behavior
ByteToMessageDecoder tries to call decode when a channel becomes inactive which tries to allocate a buffer from a closed buffer allocator: https://gist.github.com/derklaro/38899e5d645adc058785e2197da0cdc6

Not sure if I am using something wrong (wrong call order?)... This seems to only sometimes happen during shutdown 🤔 

### Netty version
5.0.0.Alpha4

### JVM version (e.g. `java -version`)
```
openjdk version "20-ea" 2023-03-21
OpenJDK Runtime Environment (build 20-ea+9-505)
OpenJDK 64-Bit Server VM (build 20-ea+9-505, mixed mode, sharing)
```

### OS version (e.g. `uname -a`)
`Linux testing 5.10.0-16-amd64 #1 SMP Debian 5.10.127-1 (2022-06-30) x86_64 GNU/Linux`
buffer/src/main/java/io/netty5/buffer/api/DefaultBufferAllocators.java
buffer/src/main/java/io/netty5/buffer/api/DefaultBufferAllocators.java
diff --git a/buffer/src/main/java/io/netty5/buffer/api/DefaultBufferAllocators.java b/buffer/src/main/java/io/netty5/buffer/api/DefaultBufferAllocators.java
index 10329926727..44b7a4fa611 100644
--- a/buffer/src/main/java/io/netty5/buffer/api/DefaultBufferAllocators.java
+++ b/buffer/src/main/java/io/netty5/buffer/api/DefaultBufferAllocators.java
@@ -61,12 +61,6 @@ public final class DefaultBufferAllocators {
             offHeap = BufferAllocator.offHeapPooled();
             logger.debug("-Dio.netty5.allocator.type: pooled (unknown: {})", allocType);
         }
-        getRuntime().addShutdownHook(new Thread(() -> {
-            //noinspection EmptyTryBlock
-            try (onHeap; offHeap) {
-                // Left blank.
-            }
-        }));
         UncloseableBufferAllocator onHeapUnclosable = new UncloseableBufferAllocator(onHeap);
         UncloseableBufferAllocator offHeapUnclosable = new UncloseableBufferAllocator(offHeap);
         DEFAULT_PREFERRED_ALLOCATOR = directBufferPreferred? offHeapUnclosable : onHeapUnclosable;
