Mir

valgrind acceptance-tests: [ FAILED ] TestClientInput.hidden_clients_do_not_receive_pointer_events

Bug #1212518 reported by Daniel van Vugt
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Mir
Fix Released
High
Alan Griffiths
mir (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

valgrind acceptance-tests:
[ FAILED ] TestClientInput.hidden_clients_do_not_receive_pointer_events

[ RUN ] TestClientInput.hidden_clients_do_not_receive_pointer_events
unknown file: Failure
C++ exception with description "Poll on readfd for pipe timed out" thrown in the test body.
==4491==
==4491== HEAP SUMMARY:
==4491== in use at exit: 396 bytes in 8 blocks
==4491== total heap usage: 7,379 allocs, 7,371 frees, 452,861 bytes allocated
==4491==
==4491== LEAK SUMMARY:
==4491== definitely lost: 0 bytes in 0 blocks
==4491== indirectly lost: 0 bytes in 0 blocks
==4491== possibly lost: 118 bytes in 4 blocks
==4491== still reachable: 278 bytes in 4 blocks
==4491== suppressed: 0 bytes in 0 blocks
==4491== Rerun with --leak-check=full to see details of leaked memory
==4491==
==4491== For counts of detected and suppressed errors, rerun with: -v
==4491== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)
/home/dan/bzr/mir/trunk/tests/acceptance-tests/test_client_input.cpp:906: Failure
Actual function call count doesn't match EXPECT_CALL(*handler, handle_input(MotionEventWithPosition(2, 2)))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
Google Test trace:
/home/dan/bzr/mir/trunk/tests/mir_test_framework/testing_process_manager.cpp:110: Client
==4490==
==4490== HEAP SUMMARY:
==4490== in use at exit: 6,739 bytes in 119 blocks
==4490== total heap usage: 20,221 allocs, 20,102 frees, 1,921,076 bytes allocated
==4490==
==4490== LEAK SUMMARY:
==4490== definitely lost: 0 bytes in 0 blocks
==4490== indirectly lost: 0 bytes in 0 blocks
==4490== possibly lost: 2,621 bytes in 43 blocks
==4490== still reachable: 4,118 bytes in 76 blocks
==4490== suppressed: 0 bytes in 0 blocks
==4490== Rerun with --leak-check=full to see details of leaked memory
==4490==
==4490== For counts of detected and suppressed errors, rerun with: -v
==4490== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)
/home/dan/bzr/mir/trunk/tests/mir_test_framework/testing_process_manager.cpp:127: Failure
Value of: result.succeeded()
  Actual: false
Expected: true
client terminate error=process::Result(child_terminated_normally, failure(1))
/home/dan/bzr/mir/trunk/tests/mir_test_framework/testing_process_manager.cpp:127: Failure
Value of: result.succeeded()
  Actual: false
Expected: true
client terminate error=process::Result(child_terminated_normally, failure(1))
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::runtime_error> >'
  what(): Timed out waiting for client (2) to appear
==4455==
==4455== HEAP SUMMARY:
==4455== in use at exit: 63,229 bytes in 1,078 blocks
==4455== total heap usage: 10,191 allocs, 9,113 frees, 604,973 bytes allocated
==4455==
==4455== LEAK SUMMARY:
==4455== definitely lost: 0 bytes in 0 blocks
==4455== indirectly lost: 0 bytes in 0 blocks
==4455== possibly lost: 12,059 bytes in 215 blocks
==4455== still reachable: 51,170 bytes in 863 blocks
==4455== suppressed: 0 bytes in 0 blocks
==4455== Rerun with --leak-check=full to see details of leaked memory
==4455==
==4455== For counts of detected and suppressed errors, rerun with: -v
==4455== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)
/home/dan/bzr/mir/trunk/tests/mir_test_framework/testing_process_manager.cpp:191: Failure
Value of: result.succeeded()
  Actual: false
Expected: true
process::Result(child_terminated_by_signal, signal(9), )
[ FAILED ] TestClientInput.hidden_clients_do_not_receive_pointer_events (62289 ms)

Related branches

Changed in mir:
status: New → Confirmed
importance: Undecided → High
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

The key error seems to be: "C++ exception with description "Poll on readfd for pipe timed out" thrown in the test body."

this is happening in client "2" in TestClientInput_hidden_clients_do_not_receive_pointer_events_Test::TestBody()::ButtonClientTwo::exec()

I've asked tvoss to take a look as he knows CrossProcessSync better than I do.

Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

- input_cb_setup_fence.wait_for_signal_ready_for();
+ input_cb_setup_fence.wait_for_signal_ready_for(std::chrono::milliseconds(4000));

Gives a dramatic improvement in the failure rate on my desktop (from every time to around 1 in 20) - I'll submit that as a workaround.

Changed in mir:
assignee: nobody → Alan Griffiths (alan-griffiths)
status: Confirmed → In Progress
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Looks like it could be related to bug 1196744 and bug 1201435.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.0.10

Changed in mir:
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package mir - 0.0.9+13.10.20130821-0ubuntu1

---------------
mir (0.0.9+13.10.20130821-0ubuntu1) saucy; urgency=low

  [ Brandon Schaefer ]
  * Release the mir surfaces when done in multiwin demo.
  * Clean up config->cards when were are deleting the display config.

  [ Alexandros Frantzis ]
  * server: Handle both user initiated and hardware display changes with
    MediatingDisplayChanger Enhance MediatingDisplayChanger to handle
    both user initiated display changes and hardware changes, by making
    it implement two interfaces for the two responsibilities
    (mg::DisplayChanger, mf::DisplayChanger).
  * shell: Notify sessions when the display configuration changes This
    patchset implements client notifications for display configuration
    changes. It also adds a mir_demo_client_display_config example which
    can be used to test and demo client initiated display configuration
    changes. Use of the example uncovered some issues that are also
    fixed by this patchset (see individual commits for more info).
  * shell: Add infrastructure for emitting and handling session related
    events.
  * shell: Support per-session display configurations This MP adds
    support for per-session display configurations, i.e., configurations
    that are active only when the client that submitted them has the
    focus. mir_connection_apply_display_config() now changes the session
    display configuration instead of the base/global one.

  [ Alan Griffiths ]
  * graphics::nested: sketch out some more of the nested mir
    implementation.
  * tests: Workaround for test timeout under valgrind. (LP: #1212518)
  * config: use the DisplayServer to hold ownership of system
    components, not the DefaultServerConfiguration.
  * graphics: Start on the NativePlatform interface.
  * graphics: Split the output state out of the NestedDisplay class.

  [ Daniel van Vugt ]
  * setup-android-dependencies.sh: Update for saucy flipped phablet
    images.
  * Give Mir a grey background by default, so you can see which monitors
    it is using.

  [ Eleni Maria Stea ]
  * graphics::nested: sketch out some more of the nested mir
    implementation.
  * nested_platform.cpp functions.

  [ Robert Carr ]
  * Pass session through placement strategy.

  [ Christopher James Halse Rogers ]
  * Add a little extra debugging API.
  * Add missing mutex around display config call.

  [ Ubuntu daily release ]
  * Automatic snapshot from revision 988
 -- Ubuntu daily release <email address hidden> Wed, 21 Aug 2013 06:04:49 +0000

Changed in mir (Ubuntu):
status: New → Fix Released
Changed in mir:
milestone: none → 0.0.10
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.