Francois Pichet via llvm-dev
2020-Jan-22 18:00 UTC
[llvm-dev] Crash in SmallVector with latest MSVC 2019 (debug mode)
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. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200122/ce0b66cf/attachment.html>
De Azevedo Piovezan, Felipe via llvm-dev
2020-Jan-22 19:04 UTC
[llvm-dev] Crash in SmallVector with latest MSVC 2019 (debug mode)
> The crash occurs only with clang compile in debug mode.Sanity check: you're not mixing clang in debug mode with LLVM in release mode, right? I've seen similar crashes in DenseMap when I *accidentally* did the above. ________________________________ From: llvm-dev <llvm-dev-bounces at lists.llvm.org> on behalf of Francois Pichet via llvm-dev <llvm-dev at lists.llvm.org> Sent: Wednesday, January 22, 2020 1:00 PM To: llvm-dev at lists.llvm.org <llvm-dev at lists.llvm.org> Subject: [llvm-dev] Crash in SmallVector with latest MSVC 2019 (debug mode) 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. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200122/6911e7f3/attachment.html>
Reid Kleckner via llvm-dev
2020-Jan-22 19:15 UTC
[llvm-dev] Crash in SmallVector with latest MSVC 2019 (debug mode)
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/598f2d78/attachment.html>
Reid Kleckner via llvm-dev
2020-Jan-22 19:25 UTC
[llvm-dev] Crash in SmallVector with latest MSVC 2019 (debug mode)
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>