GDINO Docker container malfunctioning :: HTTP/1.1 500 Unexpected Error

System Information

  • Platform: Jetson AGX Orin
  • OS: Ubuntu 22.04.5 LTS
  • Kernel: Linux 5.15.148-tegra #1 SMP PREEMPT Mon Jun 16 08:24:48 PDT 2025 aarch64

Container Version: nvcr.io/nvidia/jps/jps-gdino:ds7.1-public-12-11-1


Issue Description

Following the official NVIDIA tutorial for Grounding DINO on Jetson Platform Services, the container starts successfully but fails to process user-uploaded images with a GStreamer JPEG parsing error.

Error Message

ERROR from element jpegparse-000: Internal data stream error.
ERROR details ../libs/gst/base/gstbaseparse.c(3681): gst_base_parse_loop (): 
/GstPipeline:gdino-pipeline/GstBin:source-bin-000/GstJpegParse:jpegparse-000:
streaming stopped, reason not-negotiated (-4)

Steps Followed (Exact Tutorial Implementation)

1. Container Setup

# Pull and run container as per tutorial
sudo docker pull nvcr.io/nvidia/jps/jps-gdino:ds7.1-public-12-11-1
sudo docker run -itd --runtime nvidia --network host nvcr.io/nvidia/jps/jps-gdino:ds7.1-public-12-11-1

Result: ✅ Container starts successfully

Starting inference server
INFO:     Started server process [670]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

2. Image Upload

curl -X POST "http://localhost:8000/files" -H  "Content-Type: multipart/form-data" -F purpose="vision" -F media_type="image" -F "[email protected]"

Result: ✅ Upload successful

{"id":"8a70d11f-a442-4880-a10d-8404ceebdc84","bytes":285417,"filename":"hw2.jpg","purpose":"vision","media_type":"image"}

3. Image Analysis Request

curl -X POST http://localhost:8000/inference -H "Content-Type: application/json" -d @highway.json

Result: ❌ FAILURE - Internal Server Error

{
  "code": "InternalServerError",
  "message": "Error in inference pipeline: {
    \"reason\" : \"ERROR from element jpegparse-000: Internal data stream error.
    ERROR details ../libs/gst/base/gstbaseparse.c(3681): gst_base_parse_loop (): 
    /GstPipeline:gdino-pipeline/GstBin:source-bin-000/GstJpegParse:jpegparse-000:
    streaming stopped, reason not-negotiated (-4)\",
    \"status\" : \"HTTP/1.1 500  Unexpected Error\"
  }"
}

Troubleshooting Attempts

Attempt 1: Image Format Analysis

file hw2.jpg

Result: ✅ Image format is valid

hw2.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 1280x720, components 3

Attempt 2: Image Conversion

convert hw2.jpg -quality 90 -strip hw2_converted.jpg
curl -X POST "http://localhost:8000/files" -H  "Content-Type: multipart/form-data" -F purpose="vision" -F media_type="image" -F "file=@hw2_converted.jpg"

Result: ❌ Same error with converted image

Attempt 3: Simplified Prompt

Original prompt: "vehicle accident . vehicle crash . crash scene . vehicles colliding . accident involving vehicles . road accident . car . bus . person . bicycle"

Simplified prompt: "car, bus, person"

Result: ❌ Same error with simplified prompt

Attempt 4: Container Restart with Debug

sudo docker stop <container_id> && sudo docker rm <container_id>
sudo docker run -itd --runtime nvidia --network host -e GST_DEBUG=2 -v $(pwd):/workspace nvcr.io/nvidia/jps/jps-gdino:ds7.1-public-12-11-1

Result: ❌ Same error persists

Attempt 5: Alternative Container Version

sudo docker pull nvcr.io/nvidia/jps/jps-gdino:latest

Result: ❌ No latest tag available

Error response from daemon: manifest for nvcr.io/nvidia/jps/jps-gdino:latest not found: manifest unknown

Key Findings

1. Warmup Requests Work

The container successfully processes built-in test images during warmup:

{
  "choices": [{
    "message": {
      "content": {
        "boundingBoxes": [
          {
            "bboxes": [[468, 1, 809, 721]],
            "confidence": [0.88079702854156494],
            "phrase": "bus"
          }
        ],
        "frameHeight": 720,
        "frameWidth": 1280,
        "message": "person . bicycle . backpack . car . bus ."
      }
    }
  }],
  "usage": {"latency_in_ms": 1449}
}

2. User Images Always Fail

All user-uploaded images fail with the same JPEG parsing error, regardless of:

  • Image format (original vs converted)
  • Prompt complexity (complex vs simple)
  • Container restarts
  • Debug logging enabled

3. Container-Specific Issue

The error is consistent across:

  • Multiple container restarts
  • Different image files
  • Various prompt configurations
  • Fresh container instances

Root Cause Analysis

Based on the investigation, this appears to be a known issue with the specific GDINO container version ds7.1-public-12-11-1 related to:

  1. GStreamer Pipeline Configuration: The container’s GStreamer pipeline has compatibility issues with user-uploaded JPEG images
  2. JetPack 6.x Docker Issues: Known Docker networking and iptables problems in JetPack 6.x that affect container operations
  3. Image Processing Pipeline: The internal image processing pipeline expects specific image formats that differ from standard user uploads

Whats the solution?

Move to JPS forum.

Can your image decoded by gst command line? Can you share your image?

Yes the image is valid , here its attached

Can you have a try below command to convert the image before send the image to GDINO?

ffmpeg -i imput.jpeg -vf "format=yuv420p" -q:v 2 output.jpg

Yes with that conversion, now the GDINO service can correctly process the image and provide output. Should I do this for videos too?

Do you have any video meet issue? Please share the video if you meet any issue. We can have a check.