Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Tor Tor
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 823
    • Issues 823
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 30
    • Merge requests 30
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • The Tor Project
  • Core
  • TorTor
  • Issues
  • #2190
Closed
Open
Created Nov 15, 2010 by Nick Mathewson@nickm🐕Owner

Possible reentrant calls to libevent from libevent logging callback

Right now, we give Libevent a logging callback that can call into our logging system, which can in turn call into our networking code (to send messages to the controller), which can re-invoke libevent. That's bad, since Libevent's functions are pretty much all non-reentrant.

This bug has existed since 0.1.0.2-rc (since we've had log messages sent to controllers since 0.0.9pre5... and we've logged messages from libevent since 0.1.0.2-rc).

So why aren't we seeing this bug all the time? First, Libevent logs relatively little by default, and many of the places it logs from are harmless in practice since we don't call them reentrantly when sending log messages to the controller.

So this will probably cause big trouble only for cases where Libevent debug-level logging is enabled AND the user has a controller watching for low-severity log messages. Of course, if there are bugs that provoke libevent warnings, all bets are off.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking