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

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>14672</bug_id>
          
          <creation_ts>2021-12-30 16:35:25 +0000</creation_ts>
          <short_desc>ThreadSanitizer (-fsanitize=thread) segfault before reaching main()</short_desc>
          <delta_ts>2022-04-12 00:33:24 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>OE-Core</product>
          <component>devtools / tool chain</component>
          <version>3.4.1</version>
          <rep_platform>x86</rep_platform>
          <op_sys>x86_64</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Medium+</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>4.0 M4</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Battersby">tonyb</reporter>
          <assigned_to name="Randy MacLeod">randy.macleod</assigned_to>
          <cc>meta.mr.watcher</cc>
    
    <cc>meta.watcher</cc>
    
    <cc>raj.khem</cc>
    
    <cc>randy.macleod</cc>
    
    <cc>sundeep.kokkonda</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>No (bug/feature does not impact docs)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>92215</commentid>
    <comment_count>0</comment_count>
      <attachid>4847</attachid>
    <who name="Tony Battersby">tonyb</who>
    <bug_when>2021-12-30 16:35:25 +0000</bug_when>
    <thetext>Created attachment 4847
Trivial test program that segfaults before reaching main

Since Yocto 3.4, any C program that is compiled with -fsanitize=thread segfaults in libtsan before it even gets to main().  Even the trivial program:

int main(int argc, char **argv){return 0;}

Kernel dmesg output:
tsan-test[10113]: segfault at 600000000008 ip 00007f386a5bbb7f sp 00007fffa57e2900 error 6 in libtsan.so.0.0.0[7f386a543000+b4000]
Code: f7 c2 ff 1f 00 00 0f 84 7f 00 00 00 48 c1 e8 32 25 ff 1f 00 00 48 69 c0 00 00 13 01 48 8d 14 d0 48 b8 00 00 00 00 00 60 00 00 &lt;48&gt; c7 04 02 00 00 00 00 8b 43 1c 85 c0 75 3d 8b 93 70 02 00 00 48

I have attached a recipe with the test program to reproduce the problem.

ThreadSanitizer worked in Yocto 3.3.3 with gcc 10.2.  It broke when we upgraded to Yocto 3.4.1 with gcc 11.2.  I also tested poky master and master-next on 2021-12-30; they also fail.

Note that AddressSanitizer and UndefinedBehaviorSanitizer seem to be working OK so far in Yocto 3.4.1.  It is just ThreadSanitizer that is not working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92224</commentid>
    <comment_count>1</comment_count>
    <who name="Randy MacLeod">randy.macleod</who>
    <bug_when>2022-01-06 15:34:54 +0000</bug_when>
    <thetext>We should add a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92751</commentid>
    <comment_count>2</comment_count>
    <who name="Sundeep KOKKONDA">sundeep.kokkonda</who>
    <bug_when>2022-03-10 09:04:36 +0000</bug_when>
    <thetext>The issue is in the &apos;GetAltStackSize&apos; function from below file.
..\libsanitizer\sanitizer_common\sanitizer_posix_libcdep.cpp

This function calls recursively and causing the SIGSEGV fault. The fix for this issue is available in below patch.
https://gcc.gnu.org/git/?p=gcc.git;a=blobdiff;f=libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp;h=ddf6844bed13efeb3f7f87aee664b6b96682a8f6;hp=d1d8e509c4dbaa2cb1a0d020959765c20fa7a895;hb=90e46074e6b3561ae7d8ebd205127f286cc0c6b6;hpb=8bf5b49ebd2176b8c535147377381dd07fbdd643

This change is not yet included in the current released version of GCC. Updating to next GCC version (GCC-11.3, yet to be released) will fix the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92769</commentid>
    <comment_count>3</comment_count>
    <who name="Sundeep KOKKONDA">sundeep.kokkonda</who>
    <bug_when>2022-03-11 09:15:39 +0000</bug_when>
    <thetext>The next GCC release is not near so the patch is backported and submitted to upstream. Below are the details.
https://lists.openembedded.org/g/openembedded-core/message/163047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92997</commentid>
    <comment_count>4</comment_count>
    <who name="Randy MacLeod">randy.macleod</who>
    <bug_when>2022-04-12 00:33:24 +0000</bug_when>
    <thetext>https://git.openembedded.org/openembedded-core/commit/?id=c44c4e7fb3c860d9fcb2aada0c9d4acb1e1e8101</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4847</attachid>
            <date>2021-12-30 16:35:25 +0000</date>
            <delta_ts>2021-12-30 16:35:25 +0000</delta_ts>
            <desc>Trivial test program that segfaults before reaching main</desc>
            <filename>tsan-test.tar.gz</filename>
            <type>application/gzip</type>
            <size>1508</size>
            <attacher name="Tony Battersby">tonyb</attacher>
            
              <data encoding="base64">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
UEEFFVRQQQUVVFBBBRX0S9M/58+4IQAoAAA=
</data>

          </attachment>
      

    </bug>

</bugzilla>