[llvm-dev] Crash in SmallVector with latest MSVC 2019 (debug mode)

Reid Kleckner via llvm-dev llvm-dev at lists.llvm.org
Wed Jan 22 11:25:40 PST 2020


I was able to reproduce the problem. It seems to relate to the use of a
UniqueVector (which uses std::vector internally) of SmallVectors here:
https://github.com/llvm/llvm-project/blob/master/llvm/utils/TableGen/DFAEmitter.h#L91

Aside from potential MSVC bugs, this is a poor choice of data structures. I
would suggest using a SmallVector<T, 0> or std::vector<T> instead. So, we
could commit that as a workaround.

Relatedly, debug MSVC tablegen builds are still unusably slow. :(
https://bugs.llvm.org/show_bug.cgi?id=28222

On Wed, Jan 22, 2020 at 11:15 AM Reid Kleckner <rnk at google.com> wrote:

> I don't think there is anymore upstream LLVM testing for 32-bit MSVC. I'll
> run a local build in this configuration and look into it. I'll use this
> compiler version:
> Microsoft (R) C/C++ Optimizing Compiler Version 19.24.28315 for x86
>
> We had so many issues in clang-cl around calling conventions for "small"
> objects with interior pointers, I wouldn't be surprised if there are bugs.
>
> On Wed, Jan 22, 2020 at 10:01 AM Francois Pichet via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> Is anybody using the LLVM/clang/lldb compiled with the MSVC 2019
>> (x86-32bit) successfully?
>> I am getting crash in SmallVector at multiple places after a
>> llvm:SmallVector is being moved around in move constructor or move
>> operator=.
>>  Not sure what is going on.
>>
>>   ~SmallVectorImpl() {
>>     if (!this->isSmall())
>>       free(this->begin());  // <=== crash here, line 336 SmallVector.h
>>   }
>>
>> The crash occurs only with clang compile in debug mode. Release mode is
>> fine.
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200122/687074f5/attachment.html>


More information about the llvm-dev mailing list