boost 1.51 + wine assertion crash #1719

issue laanwj opened this issue on August 24, 2012
  1. laanwj commented at 10:47 AM on August 24, 2012: member

    A new issue with boost::interprocess in boost 1.51: it is incompatible with Wine. Not only that, but it makes bitcoin crash out with an assertion failure:

    boost/interprocess/detail/windows_intermodule_singleton.hpp:145
    

    Message: &get_map_unlocked() == m

    It occurs immediately after new message_queue(...). It seems that Wine (1.4, which comes with Ubuntu Precise) doesn't have support for Windows semaphores, as it logs a message:

    fixme:ntdll:NtQuerySemaphore (0x320,0,0x1b3f290,0x00000008,0x1b3f2a4) stub!
    

    Which is fine, if it just meant no URI support. But as said, boost crashes the entire process. This is no issue for people running on Windows, but for us testing windows builds in Wine this is incredibly annoying.

    I'm really getting tired of boost::interprocess issues on Windows. The whole construction with shared memory objects is overkill for the job, anyway. Bonus points for someone that re-implements qtipcserver with a simple QLocalSocket (which uses named pipes) :-)

    Edit: Boost 1.50 does not suffer from this problem, only 1.51+ does.

  2. sipa commented at 10:58 AM on August 24, 2012: member

    How do other applications (Armory? Electrum? MultiBit?) solve this?

  3. Diapolo commented at 11:26 AM on August 24, 2012: none

    Is Wine 1.4 current? When most of my smaller pulls are in I'll perhaps take a look at QLocalSocket ;).

  4. laanwj commented at 11:29 AM on August 24, 2012: member

    Well at least Firefox does remoting through X11/win32 messages, which would be most appropriate for an UI.

    But Qt has no support for such IPC mechanisms (except DBus, but that's linux-only) so that would be another compatibility layer... so I think a named pipe is second best, and in contrary to shared memory magic, has a small attack surface.

    • Armory: opens a TCP port, 8223 or 8224 (depending on testnet)
    • Electrum: seems to start a new UI for every URL (as of 25ad5fc)
    • MultiBit: support drag&drop of QR codes, I was not able to find any browser remoting mechanism (as of cd83087)

    And yes, Wine 1.4 is current, as it is installed by default in the latest version of at least one big distribution (Ubuntu).

  5. laanwj commented at 8:20 AM on September 21, 2012: member

    Another reason for moving away from boost::interprocess_queue: it is not supported on Mac (see 4060d64fc9de6f11ae69f3961d4f1f0450dd8286)

  6. laanwj commented at 1:38 PM on May 30, 2013: member

    Closing this, no longer an issue as we don't use boost::interprocess anymore. Joy!

  7. laanwj closed this on May 30, 2013

  8. DrahtBot locked this on Sep 8, 2021
Contributors

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-13 15:16 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me