<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>223069</bug_id>
          
          <creation_ts>2021-03-11 07:25:24 -0800</creation_ts>
          <short_desc>REGRESSION(r271560): [Linux] release assert in Thread::initializePlatformThreading</short_desc>
          <delta_ts>2021-03-25 05:12:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=220641</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>seb128</reporter>
          <assigned_to name="Alberto Garcia">berto</assigned_to>
          <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gjp</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1738441</commentid>
    <comment_count>0</comment_count>
    <who name="">seb128</who>
    <bug_when>2021-03-11 07:25:24 -0800</bug_when>
    <thetext>The webkit2gtk Ubuntu hirsute update (2.30.5 to 2.31.90) is blocked because the ruby-gnome tests started failing

Steps to trigger
- install Ubuntu hirsute
- enable sources and proposed repositories
- $ sudo apt install quilt xvfb xauth pkg-config libgtk-3-dev dbus-x11 gstreamer1.0-plugins-good gnome-icon-theme libxml2-utils ruby-webkit2-gtk
- $ apt source ruby-gnome; cd ruby-gnome-3.4.3
- $ xvfb-run ruby webkit2-gtk/test/run-test.rb
...
Loaded suite test
Started
Aborted (core dumped)

Gdb backtrace after rebuildwing webkit without optimization

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
        set = 
            {__val = {0, 140737488338759, 140737488338480, 140736484799089, 139642271679776, 140737488338688, 140737488338512, 140736484799131, 140737352090288, 67108868, 140737348587584, 0, 140736495473024, 140737348252777, 140737348252848, 140736495473024}}
        pid = &lt;optimized out&gt;
        tid = &lt;optimized out&gt;
#1  0x00007ffff7a9a864 in __GI_abort () at abort.c:79
        save_stage = 1
        act = 
          {__sigaction_handler = {sa_handler = 0x7ffff7e0c2b0, sa_sigaction = 0x7ffff7e0c2b0}, sa_mask = {__val = {0, 140736495473024, 140737348252777, 140737348252848, 140736495473024, 140737488338624, 140737488339296, 140737488338688, 3623148696358275072, 140736484799134, 140737488338640, 140737488339296, 140737349401473, 140737232721296, 128, 140737488338816}}, sa_flags = 67108868, sa_restorer = 0x7ffff7ab5040 &lt;__restore_rt&gt;}
        sigs = 
            {__val = {32, 0, 140737488338784, 140736435747119, 140737488338864, 17177430016, 140737488338960, 12884967423, 140737488338896, 140736435765782, 1099511627778, 140736495472776, 8029613824315247090, 140733461823492, 12884901891, 3}}
#2  0x00007fffc1427942 in CRASH_WITH_INFO(...) () at DerivedSources/ForwardingHeaders/wtf/Assertions.h:713
#3  0x00007fffc43a8af2 in WTF::Thread::initializePlatformThreading() ()
    at ../Source/WTF/wtf/posix/ThreadingPOSIX.cpp:217
#4  0x00007fffc42ffdc8 in operator()() () at ../Source/WTF/wtf/Threading.cpp:379
#5  0x00007fffc430017c in __invoke_impl&lt;void, WTF::initialize()::&lt;lambda()&gt; &gt;(void) ()
    at /usr/include/c++/10/bits/invoke.h:60
#6  0x00007fffc4300128 in __invoke&lt;WTF::initialize()::&lt;lambda()&gt; &gt;(void) ()
    at /usr/include/c++/10/bits/invoke.h:95
#7  0x00007fffc42fffb5 in operator()() () at /usr/include/c++/10/mutex:717
#8  0x00007fffc42fffdf in operator()() () at /usr/include/c++/10/mutex:722
#9  0x00007fffc42ffff4 in _FUN() () at /usr/include/c++/10/mutex:722
#10 0x00007ffff7a6345f in __pthread_once_slow
    (once_control=0x7fffc4d1d240 &lt;WTF::initialize()::onceKey&gt;, init_routine=0x7ffff0c35590 &lt;__once_proxy&gt;)
    at pthread_once.c:116
        _buffer = 
          {__routine = 0x7ffff7a634b0 &lt;clear_once_control&gt;, __arg = 0x7fffc4d1d240 &lt;WTF::initialize()::onceKey&gt;, __canceltype = 44121, __prev = 0x7fffffffc310}
        val = &lt;optimized out&gt;
        newval = &lt;optimized out&gt;
#11 0x00007fffc42ff016 in __gthread_once() () at /usr/include/x86_64-linux-gnu/c++/10/bits/gthr-default.h:700
#12 0x00007fffc430008d in call_once&lt;WTF::initialize()::&lt;lambda()&gt; &gt;(void) () at /usr/include/c++/10/mutex:729
#13 0x00007fffc42ffe41 in WTF::initialize() () at ../Source/WTF/wtf/Threading.cpp:372
#14 0x00007fffc3a2feaa in operator()() () at ../Source/JavaScriptCore/runtime/InitializeThreading.cpp:58
#15 0x00007fffc3a354d8 in __invoke_impl&lt;void, JSC::initialize()::&lt;lambda()&gt; &gt;(void) ()
    at /usr/include/c++/10/bits/invoke.h:60
#16 0x00007fffc3a351c3 in __invoke&lt;JSC::initialize()::&lt;lambda()&gt; &gt;(void) ()
    at /usr/include/c++/10/bits/invoke.h:95
#17 0x00007fffc3a34d6f in operator()() () at /usr/include/c++/10/mutex:717
#18 0x00007fffc3a34d99 in operator()() () at /usr/include/c++/10/mutex:722
#19 0x00007fffc3a34dae in _FUN() () at /usr/include/c++/10/mutex:722
#20 0x00007ffff7a6345f in __pthread_once_slow
    (once_control=0x7fffc4d1ca64 &lt;JSC::initialize()::onceFlag&gt;, init_routine=0x7ffff0c35590 &lt;__once_proxy&gt;)
    at pthread_once.c:116
        _buffer = 
          {__routine = 0x7ffff7a634b0 &lt;clear_once_control&gt;, __arg = 0x7fffc4d1ca64 &lt;JSC::initialize()::onceFlag&gt;, __canceltype = 1435833040, __prev = 0x7fffffffc4e0}
        val = &lt;optimized out&gt;
        newval = &lt;optimized out&gt;
#21 0x00007fffc3a2ddc4 in __gthread_once() () at /usr/include/x86_64-linux-gnu/c++/10/bits/gthr-default.h:700
#22 0x00007fffc3a34e47 in call_once&lt;JSC::initialize()::&lt;lambda()&gt; &gt;(void) () at /usr/include/c++/10/mutex:729
#23 0x00007fffc3a30056 in JSC::initialize() () at ../Source/JavaScriptCore/runtime/InitializeThreading.cpp:57
#24 0x00007fffc5d4e383 in WebKit::InitializeWebKit2() () at ../Source/WebKit/Shared/WebKit2Initialize.cpp:43
#25 0x00007fffc606b00b in operator()() () at ../Source/WebKit/UIProcess/API/glib/WebKitInitialize.cpp:65
#26 0x00007fffc606b1fe in __invoke_impl&lt;void, WebKit::webkitInitialize()::&lt;lambda()&gt; &gt;(void) ()
    at /usr/include/c++/10/bits/invoke.h:60
#27 0x00007fffc606b1cd in __invoke&lt;WebKit::webkitInitialize()::&lt;lambda()&gt; &gt;(void) ()
    at /usr/include/c++/10/bits/invoke.h:95
#28 0x00007fffc606b099 in operator()() () at /usr/include/c++/10/mutex:717
#29 0x00007fffc606b0c3 in operator()() () at /usr/include/c++/10/mutex:722
#30 0x00007fffc606b0d8 in _FUN() () at /usr/include/c++/10/mutex:722
#31 0x00007ffff7a6345f in __pthread_once_slow
    (once_control=0x7fffcbfe44f8 &lt;WebKit::webkitInitialize()::onceFlag&gt;, init_routine=0x7ffff0c35590 &lt;__once_proxy&gt;) at pthread_once.c:116
        _buffer = 
          {__routine = 0x7ffff7a634b0 &lt;clear_once_control&gt;, __arg = 0x7fffcbfe44f8 &lt;WebKit::webkitInitialize()::onceFlag&gt;, __canceltype = 0, __prev = 0x0}
        val = &lt;optimized out&gt;
        newval = &lt;optimized out&gt;
#32 0x00007fffc606aecc in __gthread_once() () at /usr/include/x86_64-linux-gnu/c++/10/bits/gthr-default.h:700
#33 0x00007fffc606b171 in call_once&lt;WebKit::webkitInitialize()::&lt;lambda()&gt; &gt;(void) ()
    at /usr/include/c++/10/mutex:729
#34 0x00007fffc606b05f in WebKit::webkitInitialize() ()
    at ../Source/WebKit/UIProcess/API/glib/WebKitInitialize.cpp:64
#35 0x00007fffc606d9eb in webkit_input_method_context_class_init() ()
    at ../Source/WebKit/UIProcess/API/glib/WebKitInputMethodContext.cpp:207
#36 0x00007fffc606d682 in webkit_input_method_context_class_intern_init() ()
    at ../Source/WebKit/UIProcess/API/glib/WebKitInputMethodContext.cpp:137
#37 0x00007ffff39dba82 in g_type_class_ref () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#38 0x00007ffff3b85058 in  () at /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/2.7.0/glib2.so
#39 0x00007ffff7d0450f in rb_ensure () at /lib/x86_64-linux-gnu/libruby-2.7.so.2.7

Downgrading the webkitgtk binaries to the hirsute 2.30.5 fixes the issue so it seems to be an issue with webkitgtk itself and not other distribution components</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740114</commentid>
    <comment_count>1</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2021-03-16 12:25:26 -0700</bug_when>
    <thetext>Ok, so here&apos;s what happens:

JSC uses SIGUSR1 to suspend and resume threads. After r271560 (see bug 220641) this signal is configurable because some users want to use SIGUSR1 for other purposes, so the patch added the JSC_SIGNAL_FOR_GC environment variable.

So far so good. The problem is that the new code in WebKit now specifically checks that no one else is handling that signal already:

https://github.com/WebKit/WebKit/blob/a807a4f6d013ac51005bb5c3153bc670fee47065/Source/WTF/wtf/posix/ThreadingPOSIX.cpp#L211

The RELEASE_ASSERT immediately after that check aborts the program.

In this specific case the problem appears when running a set of tests using Ruby. WebKit is loaded directly by the Ruby process (using gobject-introspection), and the reason why this crashes is that Ruby is installing handlers for SIGUSR1, SIGUSR2 among others:

https://sources.debian.org/src/ruby2.7/2.7.2-4/signal.c/#L1551

With a different signal there&apos;s no crash:

$ JSC_SIGNAL_FOR_GC=30 xvfb-run ruby webkit2-gtk/test/run-test.rb</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740398</commentid>
    <comment_count>2</comment_count>
    <who name="">seb128</who>
    <bug_when>2021-03-16 23:27:49 -0700</bug_when>
    <thetext>Thanks, the JSC_SIGNAL_FOR_GC trick is fixing the issue ... should it be reported to ruby-gnome instead now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740623</commentid>
    <comment_count>3</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2021-03-17 02:38:13 -0700</bug_when>
    <thetext>I suspect that this can be a common problem and therefore WebKit should not abort on a situation like this. I wouldn&apos;t report the bug to ruby-gnome yet.

Some possible alternatives:

1) Keep the previous behavior and don&apos;t abort if SIGUSR1 was already being handled. Optionally emit a warning.
2) Try different signals (USR1, USR2, ...) before aborting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740640</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-17 03:22:32 -0700</bug_when>
    <thetext>I have a question.

(In reply to Alberto Garcia from comment #3)
&gt; I suspect that this can be a common problem and therefore WebKit should not
&gt; abort on a situation like this. I wouldn&apos;t report the bug to ruby-gnome yet.
&gt; 
&gt; Some possible alternatives:
&gt; 
&gt; 1) Keep the previous behavior and don&apos;t abort if SIGUSR1 was already being
&gt; handled. Optionally emit a warning.

In this case, what signal handler is installed? If JSC signal handler is not set, then JSC will not work. On the other hand, is it OK to discard ruby&apos;s signal handler?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740668</commentid>
    <comment_count>5</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2021-03-17 04:59:45 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #4)
&gt; &gt; Some possible alternatives:
&gt; &gt;
&gt; &gt; 1) Keep the previous behavior and don&apos;t abort if SIGUSR1 was
&gt; &gt; already being handled. Optionally emit a warning.

&gt; In this case, what signal handler is installed? If JSC signal
&gt; handler is not set, then JSC will not work. On the other hand, is it
&gt; OK to discard ruby&apos;s signal handler?

In this case the JSC handler would be installed, overriding the
previous one.

What I&apos;m trying to avoid is that an app that was working fine suddenly
breaks after upgrading WebKit (as this bug report shows). Even if the
cost is that an app that was already broken remains broken.

In the case of Ruby: I just took a look at the code now and as far as
I can see the only reason why it is handling SIGUSR1 (among others) is
to run any potential handler for those signals in the Ruby script
being executed.

So yes, if a Ruby script needs to handle the same signal that JSC is
using then there is a problem. I understand that this is true in
general for any WebKit embedder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740978</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-17 17:58:43 -0700</bug_when>
    <thetext>(In reply to Alberto Garcia from comment #5)
&gt; (In reply to Yusuke Suzuki from comment #4)
&gt; &gt; &gt; Some possible alternatives:
&gt; &gt; &gt;
&gt; &gt; &gt; 1) Keep the previous behavior and don&apos;t abort if SIGUSR1 was
&gt; &gt; &gt; already being handled. Optionally emit a warning.
&gt; 
&gt; &gt; In this case, what signal handler is installed? If JSC signal
&gt; &gt; handler is not set, then JSC will not work. On the other hand, is it
&gt; &gt; OK to discard ruby&apos;s signal handler?
&gt; 
&gt; In this case the JSC handler would be installed, overriding the
&gt; previous one.
&gt; 
&gt; What I&apos;m trying to avoid is that an app that was working fine suddenly
&gt; breaks after upgrading WebKit (as this bug report shows). Even if the
&gt; cost is that an app that was already broken remains broken.
&gt; 
&gt; In the case of Ruby: I just took a look at the code now and as far as
&gt; I can see the only reason why it is handling SIGUSR1 (among others) is
&gt; to run any potential handler for those signals in the Ruby script
&gt; being executed.
&gt; 
&gt; So yes, if a Ruby script needs to handle the same signal that JSC is
&gt; using then there is a problem. I understand that this is true in
&gt; general for any WebKit embedder.

I think it is OK to remove this RELEASE_ASSERT for now, and we should also open a bug in Ruby binding implementations to configure JSC signal from SIGUSR1 to different one instead (e.g. SIGPWR, SIGXCPU etc.).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741094</commentid>
    <comment_count>7</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2021-03-18 01:58:59 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #6)
&gt; &gt; So yes, if a Ruby script needs to handle the same signal that JSC
&gt; &gt; is using then there is a problem. I understand that this is true
&gt; &gt; in general for any WebKit embedder.
&gt; I think it is OK to remove this RELEASE_ASSERT for now, and we
&gt; should also open a bug in Ruby binding implementations to configure
&gt; JSC signal from SIGUSR1 to different one instead (e.g. SIGPWR,
&gt; SIGXCPU etc.).

If we just remove the RELEASE_ASSERT then the JSC signal handler won&apos;t
be installed, which is different from the previous behavior, is that
ok?

My initial idea was to replace the handler (as WebKit used to do) and
emit a warning / log message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743286</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-24 06:10:50 -0700</bug_when>
    <thetext>(In reply to Alberto Garcia from comment #7)
&gt; My initial idea was to replace the handler (as WebKit used to do) and
&gt; emit a warning / log message.

That seems better than not registering our SIGUSR1 handler.

Alternatively, we could just crash, which seems like a more reliable way to ensure apps know they must not handle SIGUSR1 if they link to WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743302</commentid>
    <comment_count>9</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2021-03-24 07:26:27 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #8)
&gt; Alternatively, we could just crash, which seems like a more reliable way to
&gt; ensure apps know they must not handle SIGUSR1 if they link to WebKit.

&quot;Just crashing&quot; is what&apos;s happening now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743729</commentid>
    <comment_count>10</comment_count>
      <attachid>424233</attachid>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2021-03-25 04:33:11 -0700</bug_when>
    <thetext>Created attachment 424233
Patch

This patch replaces any existing handler and emits a warning. I verified that the ruby-gnome tests pass successfully with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743731</commentid>
    <comment_count>11</comment_count>
      <attachid>424233</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-03-25 04:36:20 -0700</bug_when>
    <thetext>Comment on attachment 424233
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=424233&amp;action=review

&gt; Source/WTF/wtf/posix/ThreadingPOSIX.cpp:213
&gt; +            WTFLogAlways(&quot;Overriding existing handler for signal %d. &quot;
&gt; +                &quot;Set JSC_SIGNAL_FOR_GC if you want WebKit to use a different signal&quot;, signal);

I would use a single line even if it&apos;s a bit long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743733</commentid>
    <comment_count>12</comment_count>
      <attachid>424234</attachid>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2021-03-25 04:44:08 -0700</bug_when>
    <thetext>Created attachment 424234
Patch v2

Same patch with a single line for the warning message</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743737</commentid>
    <comment_count>13</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2021-03-25 05:12:28 -0700</bug_when>
    <thetext>Committed r275014: &lt;https://commits.webkit.org/r275014&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424233</attachid>
            <date>2021-03-25 04:33:11 -0700</date>
            <delta_ts>2021-03-25 04:44:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>223069.diff</filename>
            <type>text/plain</type>
            <size>1453</size>
            <attacher name="Alberto Garcia">berto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYjZhMmE1MjgyY2U5Li5mZDU3Mzg0YjEwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDMtMjUgIEFsYmVydG8gR2FyY2lhICA8YmVydG9AaWdhbGlhLmNvbT4KKworICAgICAgICBS
RUdSRVNTSU9OKHIyNzE1NjApOiBbTGludXhdIHJlbGVhc2UgYXNzZXJ0IGluIFRocmVhZDo6aW5p
dGlhbGl6ZVBsYXRmb3JtVGhyZWFkaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjMwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXBsYWNlIGFuIGV4aXN0aW5nIHNpZ25hbCBoYW5kbGVyIGluc3Rl
YWQgb2YgYWJvcnRpbmcuCisKKyAgICAgICAgKiB3dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3Bw
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmluaXRpYWxpemVQbGF0Zm9ybVRocmVhZGluZyk6CisK
IDIwMjEtMDMtMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdU
Rjo6c2V0UGVybWlzc2lvbnNPZkNvbmZpZ1BhZ2UoKSBzaG91bGQgYWxsb3cgaXRzIFZNX0ZMQUdT
X1BFUk1BTkVOVCB3b3JrYXJvdW5kIHVuY29uZGl0aW9uYWxseS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L1RocmVhZGluZ1BPU0lYLmNwcAppbmRleCA5ZTczNjRiODU2YTUuLjhmMWJmNGQzZDA3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcApAQCAtMjA5LDcgKzIwOSw4IEBA
IHZvaWQgVGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAvLyBJdCBoYXMgc2lnbmFsIGFscmVhZHkuCiAgICAgICAg
IGlmIChvbGRBY3Rpb24uc2FfaGFuZGxlciAhPSBTSUdfREZMIHx8IGJpdHdpc2VfY2FzdDx2b2lk
Kj4ob2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikgIT0gYml0d2lzZV9jYXN0PHZvaWQqPihTSUdfREZM
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
T3ZlcnJpZGluZyBleGlzdGluZyBoYW5kbGVyIGZvciBzaWduYWwgJWQuICIKKyAgICAgICAgICAg
ICAgICAiU2V0IEpTQ19TSUdOQUxfRk9SX0dDIGlmIHlvdSB3YW50IFdlYktpdCB0byB1c2UgYSBk
aWZmZXJlbnQgc2lnbmFsIiwgc2lnbmFsKTsKICAgICAgICAgcmV0dXJuICFzaWdhY3Rpb24oc2ln
bmFsLCAmYWN0aW9uLCAwKTsKICAgICB9OwogCg==
</data>
<flag name="review"
          id="443849"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424234</attachid>
            <date>2021-03-25 04:44:08 -0700</date>
            <delta_ts>2021-03-25 05:07:30 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>223069.diff</filename>
            <type>text/plain</type>
            <size>1433</size>
            <attacher name="Alberto Garcia">berto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYjZhMmE1MjgyY2U5Li5mZDU3Mzg0YjEwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDMtMjUgIEFsYmVydG8gR2FyY2lhICA8YmVydG9AaWdhbGlhLmNvbT4KKworICAgICAgICBS
RUdSRVNTSU9OKHIyNzE1NjApOiBbTGludXhdIHJlbGVhc2UgYXNzZXJ0IGluIFRocmVhZDo6aW5p
dGlhbGl6ZVBsYXRmb3JtVGhyZWFkaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjMwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXBsYWNlIGFuIGV4aXN0aW5nIHNpZ25hbCBoYW5kbGVyIGluc3Rl
YWQgb2YgYWJvcnRpbmcuCisKKyAgICAgICAgKiB3dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3Bw
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmluaXRpYWxpemVQbGF0Zm9ybVRocmVhZGluZyk6CisK
IDIwMjEtMDMtMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdU
Rjo6c2V0UGVybWlzc2lvbnNPZkNvbmZpZ1BhZ2UoKSBzaG91bGQgYWxsb3cgaXRzIFZNX0ZMQUdT
X1BFUk1BTkVOVCB3b3JrYXJvdW5kIHVuY29uZGl0aW9uYWxseS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L1RocmVhZGluZ1BPU0lYLmNwcAppbmRleCA5ZTczNjRiODU2YTUuLmJlZmRmYzJlN2Q4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBA
IHZvaWQgVGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAvLyBJdCBoYXMgc2lnbmFsIGFscmVhZHkuCiAgICAgICAg
IGlmIChvbGRBY3Rpb24uc2FfaGFuZGxlciAhPSBTSUdfREZMIHx8IGJpdHdpc2VfY2FzdDx2b2lk
Kj4ob2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikgIT0gYml0d2lzZV9jYXN0PHZvaWQqPihTSUdfREZM
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
T3ZlcnJpZGluZyBleGlzdGluZyBoYW5kbGVyIGZvciBzaWduYWwgJWQuIFNldCBKU0NfU0lHTkFM
X0ZPUl9HQyBpZiB5b3Ugd2FudCBXZWJLaXQgdG8gdXNlIGEgZGlmZmVyZW50IHNpZ25hbCIsIHNp
Z25hbCk7CiAgICAgICAgIHJldHVybiAhc2lnYWN0aW9uKHNpZ25hbCwgJmFjdGlvbiwgMCk7CiAg
ICAgfTsKIAo=
</data>
<flag name="review"
          id="443850"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>