After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 795303 - encoder: h265: assertion when releasing internal codec buffers in certain pipelines (intel driver)
encoder: h265: assertion when releasing internal codec buffers in certain pip...
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gstreamer-vaapi
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2018-04-16 15:33 UTC by Víctor Manuel Jáquez Leal
Modified: 2018-11-03 15:53 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Víctor Manuel Jáquez Leal 2018-04-16 15:33:13 UTC
the simplest pipeline I've found to replicated the assertion is

gst-launch-1.0 -ve videotestsrc num-buffers=50 ! vaapih265enc ! \
   matroskamux ! matroskademux ! fakesink silent=false

backtrace:

  • #0 __GI_raise
    at ../sysdeps/unix/sysv/linux/raise.c line 51
  • #1 __GI_abort
    at abort.c line 79
  • #2 __assert_fail_base
  • #3 __GI___assert_fail
  • #4 0x00007fffee5f9cd3 in
  • #5 i965_destroy_surface_storage
    at i965_drv_video.c line 1591
  • #6 i965_destroy_surface
    at i965_drv_video.c line 1605
  • #7 i965_DestroySurfaces
    at i965_drv_video.c line 2110
  • #8 gen9_hevc_free_surface_private
    at gen9_hevc_encoder.c line 273
  • #9 i965_destroy_surface_storage
    at i965_drv_video.c line 1595
  • #10 i965_destroy_surface
    at i965_drv_video.c line 1605
  • #11 i965_DestroySurfaces
    at i965_drv_video.c line 2110
  • #12 vaDestroySurfaces
    at va.c line 1163
  • #13 gst_vaapi_surface_destroy
    at gstvaapisurface.c line 85
  • #14 gst_vaapi_object_finalize
    at gstvaapiobject.c line 50
  • #15 gst_vaapi_mini_object_free
    at gstvaapiminiobject.c line 39
  • #16 gst_vaapi_mini_object_unref_internal
    at ./gstvaapiminiobject.h line 202
  • #17 gst_vaapi_object_unref_internal
    at ./gstvaapiobject_priv.h line 209
  • #18 gst_vaapi_object_unref
    at gstvaapiobject.c line 130
  • #19 g_queue_foreach
  • #20 gst_vaapi_video_pool_finalize
    at gstvaapivideopool.c line 76
  • #21 gst_vaapi_mini_object_free
    at gstvaapiminiobject.c line 39
  • #22 gst_vaapi_mini_object_unref_internal
    at ./gstvaapiminiobject.h line 202
  • #23 gst_vaapi_mini_object_replace
    at gstvaapiminiobject.c line 173
  • #24 context_destroy_surfaces
    at gstvaapicontext.c line 89
  • #25 gst_vaapi_context_finalize
    at gstvaapicontext.c line 411
  • #26 gst_vaapi_object_finalize
    at gstvaapiobject.c line 50
  • #27 gst_vaapi_mini_object_free
    at gstvaapiminiobject.c line 39
  • #28 gst_vaapi_mini_object_unref_internal
    at ./gstvaapiminiobject.h line 202
  • #29 gst_vaapi_mini_object_replace
    at gstvaapiminiobject.c line 173
  • #30 gst_vaapi_object_replace_internal
    at ./gstvaapiobject_priv.h line 215
  • #31 coded_buffer_pool_finalize
    at gstvaapicodedbufferpool.c line 58
  • #32 gst_vaapi_mini_object_free
    at gstvaapiminiobject.c line 39
  • #33 gst_vaapi_mini_object_unref_internal
    at ./gstvaapiminiobject.h line 202
  • #34 gst_vaapi_mini_object_replace
    at gstvaapiminiobject.c line 173
  • #35 gst_vaapi_video_pool_replace
    at gstvaapivideopool.c line 122
  • #36 gst_vaapi_encoder_finalize
    at gstvaapiencoder.c line 1450
  • #37 gst_vaapi_mini_object_free
    at gstvaapiminiobject.c line 39
  • #38 gst_vaapi_mini_object_unref_internal
    at ./gstvaapiminiobject.h line 202
  • #39 gst_vaapi_mini_object_replace
    at gstvaapiminiobject.c line 173
  • #40 gst_vaapi_object_replace_internal
    at ./gstvaapiobject_priv.h line 215
  • #41 gst_vaapi_encoder_replace
    at gstvaapiencoder.c line 409
  • #42 gst_vaapiencode_destroy
    at gstvaapiencode.c line 466
  • #43 gst_vaapiencode_stop
    at gstvaapiencode.c line 546
  • #44 gst_video_encoder_change_state
    at gstvideoencoder.c line 1601
  • #45 gst_vaapiencode_change_state
    at gstvaapiencode.c line 769
  • #46 gst_element_change_state
    at gstelement.c line 2952
  • #47 gst_element_set_state_func
    at gstelement.c line 2906
  • #48 gst_element_set_state
    at gstelement.c line 2807
  • #49 gst_bin_element_set_state
    at gstbin.c line 2602
  • #50 gst_bin_change_state_func
    at gstbin.c line 2944
  • #51 gst_pipeline_change_state
    at gstpipeline.c line 508
  • #52 gst_element_change_state
    at gstelement.c line 2952
  • #53 gst_element_set_state_func
    at gstelement.c line 2906
  • #54 gst_element_set_state
    at gstelement.c line 2807
  • #55 main
    at gst-launch.c line 1246


This issue might be a driver's issue.

It looks like a race condition when the driver releases internal HEVC surfaces before the codec buffer is freed by the encoder.
Comment 1 GStreamer system administrator 2018-11-03 15:53:58 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues/91.