Opened 12 years ago

Closed 12 years ago

Last modified 11 years ago

#4907 closed Bugs (fixed)

message queue temp dir inconsistent if WMI calls fail.

Reported by: rick.meier@… Owned by: Ion Gaztañaga
Milestone: To Be Determined Component: interprocess
Version: Boost 1.45.0 Severity: Showstopper
Keywords: Cc:

Description

If the WMI call to get the latest boot time fails then a temporary dir under boost_interprocess is not created. This is problematic since subsequent calls to the WMI can succeed and you end up with message queues that can't connect to each other.

I have seen this happen consistently on XP when the app creating the message queue is a service.

Change History (6)

comment:1 by anonymous, 12 years ago

You can see this happen by trying to create two message queues in two simultaneous threads on XP. The call to CoInitializeSecurity() is not multithread safe under XP and will cause the retrieval of the boot time to fail. See win32_api.hpp:1457

comment:2 by anonymous, 12 years ago

This seems like the same problem as ticket:4895.

I hope it is fixed soon, because I'm unable to use boost::interprocess. If a patch is submitted here, I can test it on Windows XP and Windows 7.

comment:3 by Ion Gaztañaga, 12 years ago

Please try SVN for recent changes. I'm not an expert in COM issues, so I would need some help with this issue. Thanks for the report.

comment:4 by Ion Gaztañaga, 12 years ago

Resolution: fixed
Status: newclosed

WMI is provoking a lot of problems for Boost Interprocess users. I've decided to remove bootstamp use in windows to obtain kernel persistence in Windows. This means that windows shared memory/queues will survive to reboots, but this behaviour is allowed by POSIX. Using bootstamps to detect reboots is doing more harm than good.

WMI is removed in Boost 1.47

comment:5 by Kai K., 11 years ago

Since WMI usage was not removed for 1.47.0 please have a look at my additions to #5392!

comment:6 by anonymous, 11 years ago

It was removed in Boost 1.48.

Note: See TracTickets for help on using tickets.