ReactiveX / RxCpp

Reactive Extensions for C++
Apache License 2.0
3.07k stars 396 forks source link

Visual Studio 2015 Update 3: Release 32bit: 54 tests failed #366

Closed anatoly-spb closed 7 years ago

anatoly-spb commented 7 years ago

I have generated RxCpp Visual Studio 2015 solution with CMake 3.7.2 and built 32bit Release:

cd RxCpp
mkdir build
cd build
cmake -G "Visual Studio 14 2015" -T v140_xp ..
cmake --build . --target ALL_BUILD --config Release
cd build\test
ctest -C Release --no-compress-output -T Test

As the result the 54 tests failed with the same error (it does not matter with/without v140_xp):

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rxcpp_test_coroutine.exe is a Catch v1.7.2 host application.
Run with -? for options

-------------------------------------------------------------------------------
Scenario: coroutine completes
     Given: a source
-------------------------------------------------------------------------------
D:\jenkins\jobs\RxCpp\workspace\Rx\v2\test\subscriptions\coroutine.cpp(8)
...............................................................................

D:\jenkins\jobs\RxCpp\workspace\Rx\v2\test\subscriptions\coroutine.cpp(8): FAILED:
due to a fatal error condition:
  SIGSEGV - Segmentation violation signal

===============================================================================
test cases: 1 | 1 failed
assertions: 1 | 1 failed

Any hints?

Thank in advance, Anatoly Shirokov.

gchudnov commented 7 years ago

Hi @anatoly-spb,

Have you tried building the DEBUG version? Is the problem persists?

Thank you, Grigoriy

anatoly-spb commented 7 years ago

@gchudnov, I have no problem with the debug build. There are all tests passed.

gchudnov commented 7 years ago

Investigating further, can you build a Release version for x64 without v140_xp toolset (like this)? Does it fail on tests?

anatoly-spb commented 7 years ago

With the 64 bit release without v140_xp there is no problem, all tests passed.

gchudnov commented 7 years ago

hm.. so it looks v140_xp platform causes the problem. Is that right?

anatoly-spb commented 7 years ago

Let me check release 32 bit build without v140_xp.

anatoly-spb commented 7 years ago

I have checked. Actually we have problem with 32 bit release (it does not matter with/without v140_xp):

cmake -G "Visual Studio 14 2015"
cmake --build . --target ALL_BUILD --config Release
....
Test project D:/jenkins/jobs/RxCpp/workspace/build_vs_2015_32bit/build/test
      Start  1: coroutine
 1/65 Test  #1: coroutine ........................***Failed    1.70 sec
      Start  2: observer
 2/65 Test  #2: observer .........................   Passed    0.00 sec
      Start  3: subscription
 3/65 Test  #3: subscription .....................   Passed    0.02 sec
      Start  4: subject
 4/65 Test  #4: subject ..........................***Failed    0.19 sec
      Start  5: create
 5/65 Test  #5: create ...........................   Passed    0.00 sec
      Start  6: defer
 6/65 Test  #6: defer ............................   Passed    0.02 sec
      Start  7: empty
 7/65 Test  #7: empty ............................   Passed    0.00 sec
      Start  8: interval
 8/65 Test  #8: interval .........................   Passed    0.02 sec
      Start  9: scope
 9/65 Test  #9: scope ............................***Failed    0.17 sec
      Start 10: timer
10/65 Test #10: timer ............................   Passed    0.02 sec
      Start 11: all
11/65 Test #11: all ..............................***Failed    0.19 sec
      Start 12: any
12/65 Test #12: any ..............................***Failed    0.19 sec
      Start 13: amb
13/65 Test #13: amb ..............................***Failed    0.17 sec
      Start 14: amb_variadic
14/65 Test #14: amb_variadic .....................***Failed    0.20 sec
      Start 15: buffer
15/65 Test #15: buffer ...........................***Failed    0.16 sec
      Start 16: combine_latest
16/65 Test #16: combine_latest ...................***Failed    0.17 sec
      Start 17: concat
17/65 Test #17: concat ...........................***Failed    0.17 sec
      Start 18: concat_map
18/65 Test #18: concat_map .......................   Passed    0.02 sec
      Start 19: contains
19/65 Test #19: contains .........................***Failed    0.19 sec
      Start 20: debounce
20/65 Test #20: debounce .........................***Failed    0.17 sec
      Start 21: default_if_empty
21/65 Test #21: default_if_empty .................***Failed    0.17 sec
      Start 22: delay
22/65 Test #22: delay ............................***Failed    0.17 sec
      Start 23: distinct
23/65 Test #23: distinct .........................***Failed    0.23 sec
      Start 24: distinct_until_changed
24/65 Test #24: distinct_until_changed ...........***Failed    0.27 sec
      Start 25: element_at
25/65 Test #25: element_at .......................***Failed    0.19 sec
      Start 26: exists
26/65 Test #26: exists ...........................***Failed    0.19 sec
      Start 27: filter
27/65 Test #27: filter ...........................***Failed    0.17 sec
      Start 28: finally
28/65 Test #28: finally ..........................***Failed    0.17 sec
      Start 29: flat_map
29/65 Test #29: flat_map .........................   Passed    0.02 sec
      Start 30: group_by
30/65 Test #30: group_by .........................***Failed    0.22 sec
      Start 31: ignore_elements
31/65 Test #31: ignore_elements ..................***Failed    0.19 sec
      Start 32: is_empty
32/65 Test #32: is_empty .........................***Failed    0.17 sec
      Start 33: lift
33/65 Test #33: lift .............................***Failed    0.19 sec
      Start 34: map
34/65 Test #34: map ..............................***Failed    0.19 sec
      Start 35: merge
35/65 Test #35: merge ............................***Failed    0.16 sec
      Start 36: observe_on
36/65 Test #36: observe_on .......................***Failed    0.17 sec
      Start 37: on_error_resume_next
37/65 Test #37: on_error_resume_next .............***Failed    0.17 sec
      Start 38: pairwise
38/65 Test #38: pairwise .........................   Passed    0.00 sec
      Start 39: publish
39/65 Test #39: publish ..........................***Failed    0.23 sec
      Start 40: reduce
40/65 Test #40: reduce ...........................***Failed    0.19 sec
      Start 41: repeat
41/65 Test #41: repeat ...........................   Passed    0.02 sec
      Start 42: replay
42/65 Test #42: replay ...........................***Failed    0.19 sec
      Start 43: retry
43/65 Test #43: retry ............................***Failed    0.19 sec
      Start 44: sample
44/65 Test #44: sample ...........................***Failed    0.17 sec
      Start 45: scan
45/65 Test #45: scan .............................***Failed    0.19 sec
      Start 46: sequence_equal
46/65 Test #46: sequence_equal ...................***Failed    0.19 sec
      Start 47: skip
47/65 Test #47: skip .............................***Failed    0.19 sec
      Start 48: skip_last
48/65 Test #48: skip_last ........................***Failed    0.19 sec
      Start 49: skip_until
49/65 Test #49: skip_until .......................***Failed    0.20 sec
      Start 50: start_with
50/65 Test #50: start_with .......................***Failed    0.19 sec
      Start 51: subscribe_on
51/65 Test #51: subscribe_on .....................***Failed    0.20 sec
      Start 52: switch_if_empty
52/65 Test #52: switch_if_empty ..................***Failed    0.17 sec
      Start 53: switch_on_next
53/65 Test #53: switch_on_next ...................***Failed    0.20 sec
      Start 54: take
54/65 Test #54: take .............................***Failed    0.17 sec
      Start 55: take_last
55/65 Test #55: take_last ........................***Failed    0.17 sec
      Start 56: take_until
56/65 Test #56: take_until .......................***Failed    0.17 sec
      Start 57: take_while
57/65 Test #57: take_while .......................***Failed    0.17 sec
      Start 58: tap
58/65 Test #58: tap ..............................***Failed    0.16 sec
      Start 59: time_interval
59/65 Test #59: time_interval ....................***Failed    0.17 sec
      Start 60: timeout
60/65 Test #60: timeout ..........................***Failed    0.16 sec
      Start 61: timestamp
61/65 Test #61: timestamp ........................***Failed    0.20 sec
      Start 62: with_latest_from
62/65 Test #62: with_latest_from .................***Failed    0.16 sec
      Start 63: window
63/65 Test #63: window ...........................***Failed    0.20 sec
      Start 64: window_toggle
64/65 Test #64: window_toggle ....................***Failed    0.16 sec
      Start 65: zip
65/65 Test #65: zip ..............................***Failed    0.17 sec

17% tests passed, 54 tests failed out of 65
gchudnov commented 7 years ago

right, I was able to reproduce this issue {x86 and VS2017}.

Not sure I can make a quick fix. Need some time to look into the issue... :\

anatoly-spb commented 7 years ago

if it helps, I have catched segmentation violation in RelWithDebInfo:

    rxcpp_test_subject.exe!std::_Ref_count_obj<rxcpp::subscription::subscription_state<rxcpp::detail::composite_subscription_inner> >::_Destroy() Line 913  C++
    rxcpp_test_subject.exe!rxcpp::composite_subscription::~composite_subscription() C++
    rxcpp_test_subject.exe!rxcpp::schedulers::worker::~worker() C++
    vcruntime140.dll!__CallSettingFrame@12()   Unknown
    vcruntime140.dll!___FrameUnwindToState()   Unknown
    vcruntime140.dll!___InternalCxxFrameHandler()  Unknown
    vcruntime140.dll!___CxxFrameHandler()  Unknown
    ntdll.dll!ExecuteHandler2@20() Unknown
    ntdll.dll!ExecuteHandler@20()  Unknown
    ntdll.dll!_NtOpenKey@12()  Unknown
    ntdll.dll!ExecuteHandler2@20() Unknown
    ntdll.dll!ExecuteHandler@20()  Unknown
    ntdll.dll!_NtQueryValueKey@24()    Unknown
    KernelBase.dll!_QueryCompatibilityRegistry@4() Unknown
    msvcp140.dll!___crtInitializeSRWLock() Unknown
    ntdll.dll!_ZwAllocateVirtualMemory@24()    Unknown
    rxcpp_test_subject.exe!Catch::TestCase::TestCase(const Catch::TestCase & other) Line 159    C++
    msvcp140.dll!std::basic_ios<char,struct std::char_traits<char> >::widen(char)   Unknown
    msvcp140.dll!std::basic_ios<char,struct std::char_traits<char> >::init(class std::basic_streambuf<char,struct std::char_traits<char> > *,bool)  Unknown
    msvcp140.dll!std::basic_ostream<char,struct std::char_traits<char> >::basic_ostream<char,struct std::char_traits<char> >(class std::basic_streambuf<char,struct std::char_traits<char> > *,bool)    Unknown

Also here is Dr. Memory log for RelWithDebInfo: https://pastebin.com/YuKHKGn0