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:
- GStreamer Pipeline Configuration: The container’s GStreamer pipeline has compatibility issues with user-uploaded JPEG images
- JetPack 6.x Docker Issues: Known Docker networking and iptables problems in JetPack 6.x that affect container operations
- Image Processing Pipeline: The internal image processing pipeline expects specific image formats that differ from standard user uploads
Whats the solution?