GithubHelp home page GithubHelp logo

Comments (1)

GowrishankarSG05 avatar GowrishankarSG05 commented on May 29, 2024

I just dug into the code around boost asio and noticed the root cause of this issue.

Steps to create this issue:

  1. Register for system signal(SIGSEGV, SIGABRT, ...) using signal_set
  2. Run the event loop using io_service::run(). io_service here it has only one job that is to monitor watch signals.
  3. Now post a job to io_service
  4. While the job is being executed, Deliberately make SIGSEGV by simple accessing nullptr ;)
  5. This is the starting point where event loop start to stuck in an infinite loop

Order of the execution:

  1. When SIGSEGV is raised while executing a job, the program execution moves to boost_asio_signal_handler
  2. boost_asio_signal_handler simple writes into a fd which is what being monitored in the other side, I assume.
  3. Then hereafter boost_asio_signal_handler just leaves the function
  4. Now the execution control moves to the place where SIGSEGV risen.
  5. In this use case, Sadly epoll_wait will never have a chance to notify about the data written by boost_asio_signal_handler.
  6. Step 1 to 5 repeats infinitely.

from asio.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.