Closed Bug 1569350 Opened 5 years ago Closed 5 years ago

TestNonMemMovableStdAtomic.cpp fails on Windows with VC2019

Categories

(Developer Infrastructure :: Source Code Analysis, defect, P2)

Unspecified
Windows
defect

Tracking

(firefox71 fixed)

RESOLVED FIXED
mozilla71
Tracking Status
firefox71 --- fixed

People

(Reporter: bugzilla, Assigned: andi)

Details

Attachments

(1 file)

 1:23.73   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<CustomType> >' with non-memmovable template argument 'std::atomic<CustomType>'
 1:23.73   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<bool> >' with non-memmovable template argument 'std::atomic<bool>'
 1:23.73   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<char> >' with non-memmovable template argument 'std::atomic<char>'
 1:23.73   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<signed char> >' with non-memmovable template argument 'std::atomic<signed char>'
 1:23.73   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<unsigned char> >' with non-memmovable template argument 'std::atomic<unsigned char>'
 1:23.73   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<char16_t> >' with non-memmovable template argument 'std::atomic<char16_t>'
 1:23.73   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<char32_t> >' with non-memmovable template argument 'std::atomic<char32_t>'
 1:23.73   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<wchar_t> >' with non-memmovable template argument 'std::atomic<wchar_t>'
 1:23.73   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<short> >' with non-memmovable template argument 'std::atomic<short>'
 1:23.73   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<unsigned short> >' with non-memmovable template argument 'std::atomic<unsigned short>'
 1:23.74   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<int> >' with non-memmovable template argument 'std::atomic<int>'
 1:23.74   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<unsigned int> >' with non-memmovable template argument 'std::atomic<unsigned int>'
 1:23.74   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<long> >' with non-memmovable template argument 'std::atomic<long>'
 1:23.74   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<unsigned long> >' with non-memmovable template argument 'std::atomic<unsigned long>'
 1:23.74   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<long long> >' with non-memmovable template argument 'std::atomic<long long>'
 1:23.74   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<unsigned long long> >' with non-memmovable template argument 'std::atomic<unsigned long long>'
 1:23.74   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<void *> >' with non-memmovable template argument 'std::atomic<void *>'
 1:23.74   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 6: Cannot instantiate 'Mover<std::atomic<CustomType *> >' with non-memmovable template argument 'std::atomic<CustomType *>'
 1:23.74 error: 'note' diagnostics seen but not expected:
 1:23.74   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 12: instantiation of 'Mover<std::atomic<CustomType> >' requested here
 1:23.74   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<CustomType>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<CustomType>' (aka 'std::_Atomic_storage<CustomType, 1>')
 1:23.74   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 384: '_Choose_atomic_base_t<CustomType>' (aka 'std::_Atomic_storage<CustomType, 1>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.74   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 13: instantiation of 'Mover<std::atomic<bool> >' requested here
 1:23.74   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<bool>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<bool>' (aka 'std::_Atomic_storage<bool, 1>')
 1:23.74   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 384: '_Choose_atomic_base_t<bool>' (aka 'std::_Atomic_storage<bool, 1>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.74   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 14: instantiation of 'Mover<std::atomic<char> >' requested here
 1:23.74   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<char>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<char>' (aka 'std::_Atomic_integral_facade<char>')
 1:23.74   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<char>' (aka 'std::_Atomic_integral_facade<char>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.75   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 15: instantiation of 'Mover<std::atomic<signed char> >' requested here
 1:23.75   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<signed char>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<signed char>' (aka 'std::_Atomic_integral_facade<signed char>')
 1:23.75   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<signed char>' (aka 'std::_Atomic_integral_facade<signed char>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.75   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 16: instantiation of 'Mover<std::atomic<unsigned char> >' requested here
 1:23.75   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<unsigned char>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<unsigned char>' (aka 'std::_Atomic_integral_facade<unsigned char>')
 1:23.75   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<unsigned char>' (aka 'std::_Atomic_integral_facade<unsigned char>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.75   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 17: instantiation of 'Mover<std::atomic<char16_t> >' requested here
 1:23.75   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<char16_t>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<char16_t>' (aka 'std::_Atomic_integral_facade<char16_t>')
 1:23.75   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<char16_t>' (aka 'std::_Atomic_integral_facade<char16_t>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.75   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 18: instantiation of 'Mover<std::atomic<char32_t> >' requested here
 1:23.75   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<char32_t>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<char32_t>' (aka 'std::_Atomic_integral_facade<char32_t>')
 1:23.75   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<char32_t>' (aka 'std::_Atomic_integral_facade<char32_t>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.75   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 19: instantiation of 'Mover<std::atomic<wchar_t> >' requested here
 1:23.75   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<wchar_t>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<wchar_t>' (aka 'std::_Atomic_integral_facade<wchar_t>')
 1:23.75   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<wchar_t>' (aka 'std::_Atomic_integral_facade<wchar_t>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.76   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 20: instantiation of 'Mover<std::atomic<short> >' requested here
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<short>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<short>' (aka 'std::_Atomic_integral_facade<short>')
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<short>' (aka 'std::_Atomic_integral_facade<short>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.76   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 21: instantiation of 'Mover<std::atomic<unsigned short> >' requested here
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<unsigned short>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<unsigned short>' (aka 'std::_Atomic_integral_facade<unsigned short>')
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<unsigned short>' (aka 'std::_Atomic_integral_facade<unsigned short>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.76   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 22: instantiation of 'Mover<std::atomic<int> >' requested here
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<int>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<int>' (aka 'std::_Atomic_integral_facade<int>')
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<int>' (aka 'std::_Atomic_integral_facade<int>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.76   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 23: instantiation of 'Mover<std::atomic<unsigned int> >' requested here
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<unsigned int>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<unsigned int>' (aka 'std::_Atomic_integral_facade<unsigned int>')
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<unsigned int>' (aka 'std::_Atomic_integral_facade<unsigned int>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.76   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 24: instantiation of 'Mover<std::atomic<long> >' requested here
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<long>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<long>' (aka 'std::_Atomic_integral_facade<long>')
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<long>' (aka 'std::_Atomic_integral_facade<long>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.76   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 25: instantiation of 'Mover<std::atomic<unsigned long> >' requested here
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<unsigned long>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<unsigned long>' (aka 'std::_Atomic_integral_facade<unsigned long>')
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<unsigned long>' (aka 'std::_Atomic_integral_facade<unsigned long>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.76   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 26: instantiation of 'Mover<std::atomic<long long> >' requested here
 1:23.76   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<long long>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<long long>' (aka 'std::_Atomic_integral_facade<long long>')
 1:23.77   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<long long>' (aka 'std::_Atomic_integral_facade<long long>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.77   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 27: instantiation of 'Mover<std::atomic<unsigned long long> >' requested here
 1:23.77   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<unsigned long long>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<unsigned long long>' (aka 'std::_Atomic_integral_facade<unsigned long long>')
 1:23.77   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1142: '_Choose_atomic_base_t<unsigned long long>' (aka 'std::_Atomic_integral_facade<unsigned long long>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.77   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 28: instantiation of 'Mover<std::atomic<void *> >' requested here
 1:23.77   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<void *>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<void *>' (aka 'std::_Atomic_storage<void *, 8>')
 1:23.77   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 619: '_Choose_atomic_base_t<void *>' (aka 'std::_Atomic_storage<void *, 8>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.77   File $HOME/moz/build/clang-plugin/tests/TestNonMemMovableStdAtomic.cpp Line 29: instantiation of 'Mover<std::atomic<CustomType *> >' requested here
 1:23.77   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1369: 'std::atomic<CustomType *>' is a non-memmove()able type because it inherits from a non-memmove()able type '_Choose_atomic_base_t<CustomType *>' (aka 'std::_Atomic_pointer<CustomType *>')
 1:23.77   File C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1421~1.277\include\atomic Line 1269: '_Choose_atomic_base_t<CustomType *>' (aka 'std::_Atomic_pointer<CustomType *>') is a non-memmove()able type because it is an stl-provided type not guaranteed to be memmove-able
 1:23.77 72 errors generated.
 1:23.79 mozmake.EXE[1]: *** [$HOME/moz/config/rules.mk:788: TestNonMemMovableStdAtomic.obj] Error 1

The priority flag is not set for this bug.
:sylvestre, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(sledru)

Andi, what do you think about this issue?
thanks

Flags: needinfo?(sledru) → needinfo?(bpostelnicu)
Priority: -- → P2

What environment are you using? Are you using the compiler from the artifact build? I'm asking this because we are running this analysis for each win64 build and we don't see this kind of build errors.

Flags: needinfo?(bpostelnicu) → needinfo?(aklotz)
Assignee: nobody → bpostelnicu

It looks like my problem was that I have both VC2017 and VC2019 installed on my computer, and my build config opted to use VC2019 by default instead of VC2017. Once I added ac_add_options --with-visual-studio-version=2017 to my mozconfig, the build worked.

I guess the issue here is:

  • configure should always choose VC2017; or
  • TestNonMemMovableStdAtomic.cpp needs to be fixed to work with VC2019; or
  • Both?
Flags: needinfo?(aklotz)

Since we officially support VC2019 I think the best option here is to make TestNonMemMovableStdAtomic.cpp compliant with it.

So what happened here is that the default atomic primitives have been renamed starting with MSVC2019, I will push a patch for this.

Aaron could you test locally to confirm that this patch fixes the issue? I've tested it locally in a VM and indeed it seems fixed but since I cannot test in on infra since we still use MSVC2017 it would be nice to have one more testing run performed.

Flags: needinfo?(aklotz)

WFM! I'll take the liberty of pushing this patch. Thanks!

Flags: needinfo?(aklotz)
Pushed by aklotz@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/22543ec3f220
Added more primitives to our static-analysis from MSVC 2019. r=froydnj
Summary: TestNonMemMovableStdAtomic.cpp fails on Windows → TestNonMemMovableStdAtomic.cpp fails on Windows with VC2019
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla71
Product: Firefox Build System → Developer Infrastructure
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: