[llvm-bugs] [Bug 47359] New: [i386] Assertion failed: (Elements + Grow <= Nodes * Capacity && "Not enough room for elements"), function distribute, file llvm/lib/Support/IntervalMap.cpp, line 123.

via llvm-bugs llvm-bugs at lists.llvm.org
Sun Aug 30 08:26:38 PDT 2020


https://bugs.llvm.org/show_bug.cgi?id=47359

            Bug ID: 47359
           Summary: [i386] Assertion failed: (Elements + Grow <= Nodes *
                    Capacity && "Not enough room for elements"), function
                    distribute, file llvm/lib/Support/IntervalMap.cpp,
                    line 123.
           Product: new-bugs
           Version: 11.0
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: dimitry at andric.com
                CC: htmldeveloper at gmail.com, llvm-bugs at lists.llvm.org

Building the FreeBSD x11-toolkits/py-wxPython40 port on a i386 host (i.e.
32-bit x86, not x86_64) fails with an assertion [1]:

Assertion failed: (Elements + Grow <= Nodes * Capacity && "Not enough room for
elements"), function distribute, file
/usr/src/contrib/llvm-project/llvm/lib/Support/IntervalMap.cpp, line 123.
PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the
crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: clang -cc1 -triple i386-unknown-freebsd13.0
-emit-obj -disable-free -main-file-name sip_ribbonwxRibbonMSWArtProvider.cpp
-mrelocation-model pic -pic-level 2 -mframe-pointer=all -relaxed-aliasing
-fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu i686
-fno-split-dwarf-inlining -debug-info-kind=standalone -dwarf-version=4
-debugger-tuning=gdb -U NDEBUG -D SIP_MODULE_NAME=wx.siplib -D
SIP_MODULE_BASENAME=siplib -D
PYTHONDIR="/usr/local/lib/python3.8/site-packages" -D
PYTHONARCHDIR="/usr/local/lib/python3.8/site-packages" -D HAVE_PYEXT=1 -D
HAVE_PYTHON_H=1 -D HAVE_WX=1 -D HAVE_WXADV=1 -D HAVE_WXSTC=1 -D HAVE_WXHTML=1
-D HAVE_WXGL=1 -D HAVE_WXWEBVIEW=1 -D HAVE_WXXML=1 -D HAVE_WXXRC=1 -D
HAVE_WXRICHTEXT=1 -D HAVE_WXMEDIA=1 -D HAVE_WXRIBBON=1 -D HAVE_WXPROPGRID=1 -D
HAVE_WXAUI=1 -D _FILE_OFFSET_BITS=64 -D WXUSINGDLL -D __WXGTK__ -D _THREAD_SAFE
-O2 -fdeprecated-macro -ferror-limit 19 -pthread -stack-protector 2
-fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -vectorize-loops
-vectorize-slp -faddrsig -x c++ sip_ribbonwxRibbonMSWArtProvider-c1d103.cpp
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module
'sip_ribbonwxRibbonMSWArtProvider-c1d103.cpp'.
4.      Running pass 'Live DEBUG_VALUE analysis' on function
'@_ZN22wxRibbonMSWArtProvideraSERKS_'

I have tried to reproduce this on one of my regular x86_64 hosts, but
unfortunately it *only* occurs with a 32-bit version of clang 11.0!

Minimized test case:

// clang -cc1 -triple i386-- -S -mframe-pointer=all -debug-info-kind=standalone
-O2 sip_ribbonwxRibbonMSWArtProvider-min.cpp
class g {
public:
  void operator=(g &h) {
    if (this != &h)
      i(h);
  }
  void i(g &);
};
struct j : g {};
struct k : j {};
struct l : g {};
struct aa : l {};
struct ad : g {};
struct J : ad {};
struct cw : g {};
struct cx : cw {};
struct cy : g {};
struct da : cy {};
struct m {
  J n;
  J o;
  J b;
  aa p;
  aa c;
  aa q;
  aa r;
  aa s;
  aa t;
  aa ab;
  aa u;
  aa v;
  aa w;
  aa x;
  aa y;
  aa z;
  aa e;
  aa ac;
  aa d;
  aa ae;
  aa af;
  aa ag;
  aa ah;
  aa ai;
  aa aj;
  aa ak;
  aa al;
  aa am;
  aa an;
  aa ao;
  aa ap;
  aa aq;
  aa ar;
  aa as;
  aa at;
  aa au;
  aa av;
  aa aw;
  aa a;
  aa ax;
  aa ay;
  aa az;
  aa ba;
  aa bb;
  aa bc;
  aa bd;
  aa be;
  aa bf;
  aa bg;
  aa bh;
  aa bi;
  aa bj;
  aa bk;
  aa bl;
  aa bm;
  aa bn;
  aa bo;
  aa bp;
  aa bq;
  aa br;
  aa bs;
  aa bt;
  aa bu;
  aa bv;
  aa bw;
  aa bx;
  aa by;
  da bz;
  da ca;
  da f;
  da cb;
  da cc;
  da cd;
  da ce;
  da cf;
  da cg;
  da ch;
  k ci;
  k cj;
  k ck;
  cx cl;
  cx cq;
  cx cm;
  cx cn;
  cx co;
  cx cp;
  cx cv;
  cx cr;
  cx cs;
  cx ct;
  cx cu;
  int cz;
} * a;
void db() { a[0] = *reinterpret_cast<m *>(0); }


It seems that something is going wrong in llvm::IntervalMapImpl::distribute(),
but I'm still digging around. The first thing I tried is a 32-bit build of
clang with -fsanitize=undefined, but it did not trigger on any undefined
behavior, unfortunately.

[1] (IPv6-only)
http://beefy17.nyi.freebsd.org/data/head-i386-default/p546309_s364850/logs/errors/py37-wxPython40-4.0.7_1.log

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200830/1fd15ec6/attachment.html>


More information about the llvm-bugs mailing list