Attaching custom type metadata to gstreamer buffer on src pad causing sudden crash

Hi,
We have one more sample:

deepstream_sdk_v4.0_jetson\sources\apps\sample_apps\deepstream-user-metadata-test

And below modification for your reference:

static GstPadProbeReturn
pgie_src_pad_buffer_probe (GstPad * pad, GstPadProbeInfo * info,
    gpointer u_data)
{
  GstBuffer *buf = (GstBuffer *) info->data;
  NvDsMetaList * l_frame = NULL;
  NvDsUserMeta *user_meta = NULL;
  NvDsMetaType user_meta_type = NVDS_DECODER_GST_META_EXAMPLE;

  NvDsBatchMeta *batch_meta = gst_buffer_get_nvds_batch_meta (buf);

  for (l_frame = batch_meta->frame_meta_list; l_frame != NULL;
    l_frame = l_frame->next) {
      NvDsFrameMeta *frame_meta = (NvDsFrameMeta *) (l_frame->data);

      /* Acquire NvDsUserMeta user meta from pool */
      user_meta = nvds_acquire_user_meta_from_pool(batch_meta);

      NvDecoderMeta *decoder_meta = (NvDecoderMeta *)g_malloc0(sizeof(NvDecoderMeta));
      /* Add dummy metadata */
      decoder_meta->frame_type = (frame_number % 3);
      decoder_meta->frame_num = frame_number++;
      decoder_meta->dec_err = ((frame_number % 4) / 3);

      /* Set NvDsUserMeta below */
      user_meta->user_meta_data = (void *)decoder_meta;
      user_meta->base_meta.meta_type = user_meta_type;
      user_meta->base_meta.copy_func = (NvDsMetaCopyFunc)decoder_gst_to_nvds_meta_transform_func;
      user_meta->base_meta.release_func = (NvDsMetaReleaseFunc)decoder_gst_nvds_meta_release_func;

      /* We want to add NvDsUserMeta to frame level */
      nvds_add_user_meta_to_frame(frame_meta, user_meta);
  }
  return GST_PAD_PROBE_OK;
}