はじめに
Jetsonコンテナ内で、GStreamerのGPUアクセレレータ(nvjpeg、nvvidconvなど)がエラーとなるときの対処方法を紹介する。
前提として、ホストではエラーとならず、コンテナ内のみでエラーとなる。また、コンテナ起動時に、runtime=nvidiaを有効としておりコンテナ内でGPUは扱える状態となっている。
エラー内容
gst-inspect-1.0コマンドで、nvjpegを確認すると
gst-inspect-1.0 nvjpeg
下記のようなエラーとなる。
Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libcluttergst3.so': /lib/aarch64-linux-gnu/libGLdispatch.so.0: cannot allocate memory in static TLS block
動作確認環境
- JetPack 5.1.1 / 5.1.2
- AGX Orin 32GB / 64GB
方法
コンテナ内で下記コマンドを実行する。
export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libGLdispatch.so.0:$LD_PRELOAD
rm ~/.cache/gstreamer-1.0/ -fr
解説
-
export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libGLdispatch.so.0:$LD_PRELOAD
読み込めていないライブラリのパスを追加 -
rm ~/.cache/gstreamer-1.0/ -fr
GStreamerのキャッシュを削除
Docker Composeで指定する場合
commandに、上記の対策を入れる。
docker-compose.yaml
services:
some-service:
command:
- /bin/bash
- -c
- |
export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libGLdispatch.so.0:$LD_PRELOAD
rm ~/.cache/gstreamer-1.0/ -fr
{your-command}
まとめ
Jetsonで、GstreamerのGPUアクセラレータがエラーとなるときの対象方法を紹介した。
参考