Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b72e2e1 authored by Anthony Stange's avatar Anthony Stange
Browse files

Don't assert while a callback is registered

If an assert fails while a callback is registered and some data
is delivered that attempts to invoke the callback, it'll cause a
segfault since the callback is allocated on a part of the stack
that's no longer valid.

Bug: 183362725
Change-Id: I3a1f8fbf15c24e344fde8e5b44bb93681ef47d38
Test: Run VTS
parent c0f1cc2a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -462,6 +462,7 @@ TEST_P(SensorsHidlTest, InjectSensorEventData) {

    // Wait for events to be written back to the Event FMQ
    callback.waitForEvents(sensors, milliseconds(1000) /* timeout */);
    getEnvironment()->unregisterCallback();

    for (const auto& s : sensors) {
        auto events = callback.getEvents(s.sensorHandle);
@@ -485,7 +486,6 @@ TEST_P(SensorsHidlTest, InjectSensorEventData) {
        ASSERT_EQ(lastEvent.u.vec3.status, injectedEvent.u.vec3.status);
    }

    getEnvironment()->unregisterCallback();
    ASSERT_EQ(Result::OK, getSensors()->setOperationMode(OperationMode::NORMAL));
}

@@ -603,7 +603,7 @@ void SensorsHidlTest::runFlushTest(const std::vector<SensorInfoType>& sensors, b
                         << " type=" << static_cast<int>(sensor.type) << " name=" << sensor.name);

            Result flushResult = flush(sensor.sensorHandle);
            ASSERT_EQ(flushResult, expectedResponse);
            EXPECT_EQ(flushResult, expectedResponse);
        }
    }