<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><p data-sourcepos="1:1-2:15" dir="auto">spice-server: 0.15
spice-gtk: 0.39</p><p style="margin:0;">

</p><div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="5:1-20:3" class="code highlight js-syntax-highlight language-plaintext white" lang="plaintext" id="code-3"></pre></div><div>I modified the spice-server to use h264 as default:</div><div><pre class="code highlight" lang="plaintext"><span id="LC1" class="line" lang="plaintext">--- a/server/reds.cpp</span>
<span id="LC2" class="line" lang="plaintext">+++ b/server/reds.cpp</span>
<span id="LC3" class="line" lang="plaintext">@@ -3428,11 +3428,12 @@ err:</span>
<span id="LC4" class="line" lang="plaintext"> </span>
<span id="LC5" class="line" lang="plaintext"> static const char default_renderer[] = "sw";</span>
<span id="LC6" class="line" lang="plaintext"> #if defined(HAVE_GSTREAMER_1_0) || defined(HAVE_GSTREAMER_0_10)</span>
<span id="LC7" class="line" lang="plaintext">-#define GSTREAMER_CODECS "gstreamer:mjpeg;gstreamer:h264;gstreamer:vp8;gstreamer:vp9;"</span>
<span id="LC8" class="line" lang="plaintext">+#define GSTREAMER_CODECS "gstreamer:h264;gstreamer:mjpeg;gstreamer:vp8;gstreamer:vp9;"</span>
<span id="LC9" class="line" lang="plaintext"> #else</span>
<span id="LC10" class="line" lang="plaintext"> #define GSTREAMER_CODECS ""</span>
<span id="LC11" class="line" lang="plaintext"> #endif</span>
<span id="LC12" class="line" lang="plaintext">-static const char default_video_codecs[] = "spice:mjpeg;" GSTREAMER_CODECS;</span>
<span id="LC13" class="line" lang="plaintext">+//static const char default_video_codecs[] = "spice:mjpeg;" GSTREAMER_CODECS;</span>
<span id="LC14" class="line" lang="plaintext">+static const char default_video_codecs[] = GSTREAMER_CODECS "spice:mjpeg;";</span></pre><pre class="code highlight" lang="plaintext"><span class="line" lang="plaintext">Then I test the linux client and windows client,they are all normal.But the Android client(aSPICE) crashed:</span></pre><pre class="code highlight" lang="plaintext"><span id="LC1" class="line" lang="plaintext">the server paly video with encode h264, the android client crashed.</span>
<span id="LC2" class="line" lang="plaintext"></span>
<span id="LC3" class="line" lang="plaintext">2022-03-01 10:05:08.721 13727-13984/com.iiordanov.freeaSPICE D/GLib+GSpice: ../src/decode-glz.c:338 decode_header: 32x19, id 343, ref 0</span>
<span id="LC4" class="line" lang="plaintext">2022-03-01 10:05:08.733 13727-13975/com.iiordanov.freeaSPICE E/GLib+GLib-GObject: g_type_set_qdata: assertion 'node != NULL' failed</span>
<span id="LC5" class="line" lang="plaintext">2022-03-01 10:05:08.733 13727-13975/com.iiordanov.freeaSPICE E/GLib+GLib: g_once_init_leave: assertion 'result != 0' failed</span>
<span id="LC6" class="line" lang="plaintext">2022-03-01 10:05:08.722 13727-13984/com.iiordanov.freeaSPICE D/GLib+GSpice: ../src/decode-glz.c:338 decode_header: 32x11, id 344, ref 0</span>
<span id="LC7" class="line" lang="plaintext">2022-03-01 10:05:08.734 13727-13975/com.iiordanov.freeaSPICE E/GLib+GLib: g_once_init_leave: assertion 'result != 0' failed</span>
<span id="LC8" class="line" lang="plaintext">2022-03-01 10:05:08.734 13727-13975/com.iiordanov.freeaSPICE E/signal_handler: Signal handler called with signal: 11,</span>
<span id="LC9" class="line" lang="plaintext">2022-03-01 10:05:08.724 13727-13727/com.iiordanov.freeaSPICE W/RenderThread: type=1400 audit(0.0:95945): avc: denied { write } for name="sched_assist_boost_freq" dev="proc" ino=4026533817 scontext=u:r:untrusted_app:s0:c40,c257,c512,c768 tcontext=u:object_r:proc_slide_enable:s0 tclass=file permissive=0 app=com.iiordanov.freeaSPICE</span>
<span id="LC10" class="line" lang="plaintext">2022-03-01 10:05:08.734 13727-13975/com.iiordanov.freeaSPICE I/disconnect: Disconnecting the session.</span>
<span id="LC11" class="line" lang="plaintext">2022-03-01 10:05:08.733 13727-13975/com.iiordanov.freeaSPICE E/GLib+GLib-GObject: g_pointer_type_register_static: assertion 'g_type_from_name (name) == 0' failed</span>
<span id="LC12" class="line" lang="plaintext">2022-03-01 10:05:08.734 13727-13975/com.iiordanov.freeaSPICE D/GLib+GSpice: ../src/spice-session.c:2025 session: disconnecting 0</span>
<span id="LC13" class="line" lang="plaintext">2022-03-01 10:05:08.733 13727-13975/com.iiordanov.freeaSPICE E/GLib+GLib: g_once_init_leave: assertion 'result != 0' failed</span>
<span id="LC14" class="line" lang="plaintext">2022-03-01 10:05:08.734 13727-13975/com.iiordanov.freeaSPICE E/GLib+GLib: g_once_init_leave: assertion 'result != 0' failed</span>
<span id="LC15" class="line" lang="plaintext">2022-03-01 10:05:08.734 13727-13975/com.iiordanov.freeaSPICE E/signal_handler: Signal handler called with signal: 11,</span>
<span id="LC16" class="line" lang="plaintext">2022-03-01 10:05:08.734 13727-13975/com.iiordanov.freeaSPICE I/disconnect: Disconnecting the session.</span>
<span id="LC17" class="line" lang="plaintext">2022-03-01 10:05:08.734 13727-13975/com.iiordanov.freeaSPICE D/GLib+GSpice: ../src/spice-session.c:2025 session: disconnecting 0</span>
</pre><pre class="code highlight" lang="plaintext"><span class="line" lang="plaintext">I comment the signal_handle in JNI_OnLoad, and got the tombstone.The crash stack trace:</span></pre><pre class="code highlight" lang="plaintext"><span class="line" lang="plaintext">********** Crash dump: **********</span></pre><pre class="code highlight" lang="plaintext"><span id="LC1" class="line" lang="plaintext">gst_buffer_get_video_meta (GstBuffer * buffer)</span>
<span id="LC2" class="line" lang="plaintext">{</span>
<span id="LC3" class="line" lang="plaintext">  gpointer state = NULL;</span>
<span id="LC4" class="line" lang="plaintext">  GstVideoMeta *out = NULL;</span>
<span id="LC5" class="line" lang="plaintext">  GstMeta *meta;</span>
<span id="LC6" class="line" lang="plaintext">  const GstMetaInfo *info = GST_VIDEO_META_INFO;</span>
<span id="LC7" class="line" lang="plaintext"></span>
<span id="LC8" class="line" lang="plaintext">  while ((meta = gst_buffer_iterate_meta (buffer, &state))) {</span>
<span id="LC9" class="line" lang="plaintext">    if (meta->info->api == info->api) {</span>
<span id="LC10" class="line" lang="plaintext">      GstVideoMeta *vmeta = (GstVideoMeta *) meta;</span>
<span id="LC11" class="line" lang="plaintext">      if (vmeta->id == 0)</span>
<span id="LC12" class="line" lang="plaintext">        return vmeta;           /* Early out for id 0 */</span>
<span id="LC13" class="line" lang="plaintext">      if (out == NULL || vmeta->id < out->id)</span>
<span id="LC14" class="line" lang="plaintext">        out = vmeta;</span>
<span id="LC15" class="line" lang="plaintext">    }</span>
<span id="LC16" class="line" lang="plaintext">  }</span>
<span id="LC17" class="line" lang="plaintext">  return out;</span>
<span id="LC18" class="line" lang="plaintext">}</span>
</pre><pre class="code highlight" lang="plaintext"><span class="line" lang="plaintext"><div data-testid="gfm-content" class="md"><p data-sourcepos="115:1-115:26" dir="auto">info->api, info is NULLĄŁ</p></div></span></pre></div></div><br><br><span title="neteasefooter"><p> </p></span>