Skip to content

assert failed in processLimit #50

@penfree

Description

@penfree

I got an exception and the program crashed, i don't really know how to reproduce it, it is not triggered by a special parameter. would you please help me to figure it out. @gelldur

  • The error log:
    /thirdparty/EventBus-3.0.4/lib/src/dexode/EventBus.cpp:57: std::size_t dexode::EventBus::processLimit(std::size_t): Assertion `removeFrom != _eventStreams.end()' failed.

  • The source code is here:

	{
		std::lock_guard writeGuard{_mutexStreams};
		if(!_eventStreams.empty())
		{
			// If anything was added then we need to add those elements
			std::move(_eventStreams.begin(), _eventStreams.end(), std::back_inserter(eventStreams));
		}
		std::swap(eventStreams, _eventStreams); // move data TO member

		// Check do we need remove something
		if(_eventStreams.size() != _eventToStream.size())
		{
			auto removeFrom = std::remove_if(
				_eventStreams.begin(), _eventStreams.end(), [this](const auto& eventStream) {
					for(const auto& element : _eventToStream)
					{
						// Don't remove if we point to the same place (is it UB ?)
						if(element.second == eventStream.get())
						{
							return false;
						}
					}
					return true;
				});
			assert(removeFrom != _eventStreams.end());
			_eventStreams.erase(removeFrom, _eventStreams.end());
		}
	}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions