Boost C++ Libraries: Ticket #5392: Message queue temporary dir named "Select LastBootUpTime from Win32_OperatingSystem" (on win XP) https://svn.boost.org/trac10/ticket/5392 <p> There is still problem with message queue temp directory related to bug <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/4010"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/4010</a> </p> <p> I'm using boost interprocess message queue on Windows XP SP3 32bit, and boost 1_46_1 </p> <p> In first application i'm executing function </p> <pre class="wiki">mq = new boost::interprocess::message_queue( boost::interprocess::create_only ,mqName-&gt;c_str() ,10 ,sizeof(MqMessageStruct) ); </pre><p> then boost creates temp directory </p> <p> C:\Documents and Settings\All Users\Application Data\boost_interprocess\20110327091835.364787\ </p> <p> this is OK. In second application I try to create message_queue object by execute constructor </p> <pre class="wiki">boost::interprocess::message_queue mq( boost::interprocess::open_only ,mqName-&gt;c_str() ); </pre><p> boost creates temp directory named: </p> <pre class="wiki">C:\Documents and Settings\All Users\Application Data\boost_interprocess\Select LastBootUpTime from Win32_OperatingSystem\ </pre><p> and throws exception. Existing message queue can't be open and can't work. In boost 1_44 this code was working good (except issue described in ticket 4010) </p> <p> I've watching source code and I think that problem is somewhere in file boost_1_46_1\boost\interprocess\detail\win32_api.hpp in function inline bool get_wmi_class_attribute( std::wstring&amp; strValue, const wchar_t *wmi_class, const wchar_t *wmi_class_var) between lines 1525 and 1558. Maybe pEnumObject Object in line 1547 is empty. </p> <p> Another issue is that in file \boost_1_46_1\boost\interprocess\detail\tmp_dir_helpers.hpp in function inline void get_bootstamp(std::string &amp;s, bool add = false) (line 38) there is no check for result returned from winapi::get_last_bootup_time(bootstamp); (line 41) </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/5392 Trac 1.4.3 Ion Gaztañaga Thu, 31 Mar 2011 08:01:32 GMT <link>https://svn.boost.org/trac10/ticket/5392#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:1</guid> <description> <p> I need more context to track the bug. The second process is a process of the same user? Which error code do you get in functions between between lines 1525 and 1558? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Ion Gaztañaga</dc:creator> <pubDate>Thu, 31 Mar 2011 08:22:56 GMT</pubDate> <title>attachment set https://svn.boost.org/trac10/ticket/5392 https://svn.boost.org/trac10/ticket/5392 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">wmi.patch</span> </li> </ul> <p> Patch for WMI to make blocking call </p> Ticket wsx22@… Thu, 31 Mar 2011 13:09:26 GMT <link>https://svn.boost.org/trac10/ticket/5392#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:2</guid> <description> <p> Replying to <a class="ticket" href="https://svn.boost.org/trac10/ticket/5392#comment:1" title="Comment 1">igaztanaga</a>: </p> <blockquote class="citation"> <p> I need more context to track the bug. The second process is a process of the same user? </p> </blockquote> <p> Yes </p> <blockquote class="citation"> <p> Which error code do you get in functions between between lines 1525 and 1558? </p> </blockquote> <p> I will try to debug that information later, I'm new in c++ and winapi </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Thu, 31 Mar 2011 23:19:53 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:3 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:3</guid> <description> <p> I've debugged get_wmi_class_attribute function </p> <p> with orginal code from 1_46_1 </p> <p> during new boost::interprocess::message_queue(boost::interprocess::create_only, ... ) instruction there are 3 invocations of get_wmi_class_attribute function, all of it returns correct string </p> <p> first execution looks like this: </p> <pre class="wiki">long co_init_ret = CoInitialize(0); co_init_ret = 0x00000001 (S_FALSE_IG) long sec_init_ret = CoInitializeSecurity sec_init_ret = 0x00000000 pWbemServices-&gt;ExecQuery(..) returns 0 pEnumObject-&gt;Reset() returns 0 pEnumObject-&gt;Next( WBEM_INFINITE_IG, uCount, &amp;pClassObject, &amp;uReturned ) returns 0 goes into while body pClassObject-&gt;Get( L"LastBootUpTime", 0, &amp;vwchar, 0, 0 ) returns 0 strValue = vwchar.value.pbstrVal; ok, returns correct value return bRet; bRet = true </pre><p> second and third execution looks like this: </p> <pre class="wiki">long co_init_ret = CoInitialize(0); co_init_ret = 0x00000001 (S_FALSE_IG) long sec_init_ret = CoInitializeSecurity sec_init_ret = 0x80010119 pWbemServices-&gt;ExecQuery(..) returns 0 pEnumObject-&gt;Reset() returns 0 pEnumObject-&gt;Next( WBEM_INFINITE_IG, uCount, &amp;pClassObject, &amp;uReturned ) returns 0 program goes into while body pClassObject-&gt;Get( L"LastBootUpTime", 0, &amp;vwchar, 0, 0 ) returns 0 strValue = vwchar.value.pbstrVal; ok, returns correct value return bRet; bRet = true </pre><p> during boost::interprocess::message_queue mq(boost::interprocess::open_only, ... ) instruction there are 2 invocations of get_wmi_class_attribute function, all of it returns wrong string </p> <p> first and second execution looks like this: </p> <pre class="wiki">long co_init_ret = CoInitialize(0); co_init_ret = 0x00000001 (S_FALSE_IG) long sec_init_ret = CoInitializeSecurity sec_init_ret = 0x80010119 (RPC_E_TOO_LATE_IG) pWbemServices-&gt;ExecQuery(..) returns 0 pEnumObject-&gt;Reset() returns 0 pEnumObject-&gt;Next( WBEM_INFINITE_IG, uCount, &amp;pClassObject, &amp;uReturned ) returns 0x80041003 program not goes into while body return bRet; bRet = false </pre><p> with orginal code from 1_46_1 witch wmi.patch </p> <p> during new boost::interprocess::message_queue(boost::interprocess::create_only, ... ) instruction there are 3 invocations of get_wmi_class_attribute function, all of it returns correct string </p> <p> first execution looks like this: </p> <pre class="wiki">long co_init_ret = CoInitialize(0); co_init_ret = 0x00000001 (S_FALSE_IG) long sec_init_ret = CoInitializeSecurity sec_init_ret = 0x00000000 pWbemServices-&gt;ExecQuery(..) returns 0 pEnumObject-&gt;Next( WBEM_INFINITE_IG, uCount, &amp;pClassObject, &amp;uReturned ) returns 0 goes into while body pClassObject-&gt;Get( L"LastBootUpTime", 0, &amp;vwchar, 0, 0 ) returns 0 strValue = vwchar.value.pbstrVal; ok, returns correct value return bRet; bRet = true </pre><p> second and third execution looks like this: </p> <pre class="wiki">long co_init_ret = CoInitialize(0); co_init_ret = 0x00000001 (S_FALSE_IG) long sec_init_ret = CoInitializeSecurity sec_init_ret = 0x80010119 (RPC_E_TOO_LATE_IG) pWbemServices-&gt;ExecQuery(..) returns 0 pEnumObject-&gt;Next( WBEM_INFINITE_IG, uCount, &amp;pClassObject, &amp;uReturned ) returns 0 goes into while body pClassObject-&gt;Get( L"LastBootUpTime", 0, &amp;vwchar, 0, 0 ) returns 0 strValue = vwchar.value.pbstrVal; ok, returns correct value return bRet; bRet = true </pre><p> during boost::interprocess::message_queue mq(boost::interprocess::open_only, ... ) instruction there are 2 invocations of get_wmi_class_attribute function, all of it returns wrong string </p> <p> first and second execution looks like this: </p> <pre class="wiki">long co_init_ret = CoInitialize(0); co_init_ret = 0x00000001 (S_FALSE_IG) long sec_init_ret = CoInitializeSecurity sec_init_ret = 0x80010119 (RPC_E_TOO_LATE_IG) pWbemServices-&gt;ExecQuery(..) returns 0x80041003 return bRet; bRet = false </pre><p> implications: </p> <ul><li><a class="missing wiki">CoInitializeSecurity</a> returns 0x80010119 </li></ul><p> if it was executed before </p> <ul><li>pEnumObject-&gt;Next(..)or pWbemServices-&gt;<a class="missing wiki">ExecQuery</a>(..) fails if </li></ul><p> if it was executed before from another process </p> <ul><li>this bug is related to: </li></ul><p> <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/4895"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/4895</a> and <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/4907"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/4907</a> </p> <ul><li>get_wmi_class_attribute function executes multiple times per one boost::interprocess::message_queue instruction, maybe its result should be cached somewhare </li></ul> </description> <category>Ticket</category> </item> <item> <dc:creator>Ion Gaztañaga</dc:creator> <pubDate>Fri, 01 Apr 2011 07:56:01 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:4 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:4</guid> <description> <p> 0x80041003 is WBEM_E_ACCESS_DENIED which seems to be a permission issue. All executions are from the same process? Two processes from two different users? </p> <p> Also, MSDN documentation says pEnumObject-&gt;Next can't return 0x80041003. </p> </description> <category>Ticket</category> </item> <item> <author>wsx22@…</author> <pubDate>Fri, 01 Apr 2011 09:54:39 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:5 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:5</guid> <description> <p> creating message queue by executing<br /> new boost::interprocess::message_queue(boost::interprocess::create_only, ... )<br /> instruction, is done by one process. </p> <p> trying to open existing message queue by executing<br /> boost::interprocess::message_queue mq(boost::interprocess::open_only, ... )<br /> instruction, is done by another process. </p> <p> Both proceses are running on same windows user account (with administrator rights) <br /> <br /> </p> <blockquote class="citation"> <p> Also, MSDN documentation says pEnumObject-&gt;Next can't return 0x80041003. </p> </blockquote> <p> mine pEnumObject-&gt;Next returns this code when pWbemServices-&gt;<a class="missing wiki">ExecQuery</a>(...) is executed with WBEM_FLAG_RETURN_IMMEDIATELY_IG flag </p> <p> when pWbemServices-&gt;<a class="missing wiki">ExecQuery</a>(...) is executed with WBEM_FLAG_RETURN_WHEN_COMPLETE_IG | WBEM_FLAG_FORWARD_ONLY_IG flags, 0x80041003 is returned from pWbemServices-&gt;<a class="missing wiki">ExecQuery</a>(...) </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Ion Gaztañaga</dc:creator> <pubDate>Fri, 01 Apr 2011 17:09:29 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/5392#comment:6 https://svn.boost.org/trac10/ticket/5392#comment:6 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> 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. </p> <p> WMI is removed in Boost 1.47 </p> Ticket wsx22@… Sat, 02 Apr 2011 00:53:06 GMT <link>https://svn.boost.org/trac10/ticket/5392#comment:7 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:7</guid> <description> <p> @igaztanaga </p> <p> I have seen Your last revision 70838 at SVN. I was trying to test it but when I compiled my project with last revision (70838) of interprocess library, I've got an error </p> <pre class="wiki">c:\c\boost_1_46_1\boost\interprocess\detal\move.hpp(17) : fatal error C1083: Cannot open include file: 'boost/move/move.hpp': No such file or directory </pre><p> Last revision of interprocess library witch i can compile is 70055, I'm using Ms Visual Studio 2008. </p> <p> (ps. I'm working on my patch for <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5392" title="#5392: Bugs: Message queue temporary dir named &#34;Select LastBootUpTime from ... (closed: fixed)">#5392</a> issue) </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Sat, 02 Apr 2011 07:50:56 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:8 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:8</guid> <description> <p> Interprocess is now dependent on recently accepted Boost.Move. Download it from SVN. </p> </description> <category>Ticket</category> </item> <item> <author>wsx22@…</author> <pubDate>Mon, 04 Apr 2011 18:14:48 GMT</pubDate> <title>attachment set https://svn.boost.org/trac10/ticket/5392 https://svn.boost.org/trac10/ticket/5392 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">boost_ticket5392.patch.zip</span> </li> </ul> <p> proposed patch, see comment 9 </p> Ticket wsx22@… Mon, 04 Apr 2011 18:16:21 GMT <link>https://svn.boost.org/trac10/ticket/5392#comment:9 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:9</guid> <description> <p> I have written patch witch workaround WMI issue on win XP, I think message queue can be kernel persistance again. My project compiled with this patch (boost 1_46_1 svn rev. 70821 + patch) is running on my win xp for 2 days now without any problems. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Kai k:</dc:creator> <pubDate>Mon, 02 May 2011 12:23:45 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:10 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:10</guid> <description> <p> Replying to <a class="ticket" href="https://svn.boost.org/trac10/ticket/5392#comment:6" title="Comment 6">igaztanaga</a>: </p> <blockquote class="citation"> <p> WMI is removed in Boost 1.47 </p> </blockquote> <p> I have the same problem and I had a look at the road map to see when milestone 1.47 is going to be finished. Unfortunately the milestone is 2 days late! Is there any planning to release 1.47 in the near future? </p> </description> <category>Ticket</category> </item> <item> <author>maik.mory@…</author> <pubDate>Fri, 20 May 2011 17:48:18 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:11 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:11</guid> <description> <p> Bug observed on Windows 7 SP1 x64 with Visual Studio 2010. boost_ticket5392.patch did the job. </p> <h3 class="section" id="ElaborateReport">Elaborate Report</h3> <p> I used "Process Explorer -&gt; View -&gt; Lower Pane View -&gt; Handles" to inspect the name of the shared memory segment. </p> <p> with boost_1_64_1 unpatched: <br /> Process A: <code>C:\ProgramData\boost_interprocess\20110520003539.574067\foo</code><br /> Process B: <code>C:\ProgramData\boost_interprocess\Select LastBootUpTime from Win32_OperatingSystem\foo</code><br /> </p> <p> with boost_1_64_1 wmi.patch:<br /> Process A: <code>C:\ProgramData\boost_interprocess\20110520003539.574067\foo</code><br /> Process B: <code>C:\ProgramData\boost_interprocess</code><br /> </p> <p> with boost_1_64_1 boost_ticket5392.patch:<br /> Process A: <code>C:\ProgramData\boost_interprocess\704368109915cc\foo</code><br /> Process B: <code>C:\ProgramData\boost_interprocess\704368109915cc\foo</code><br /> </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Ion Gaztañaga</dc:creator> <pubDate>Sat, 21 May 2011 06:36:29 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:12 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:12</guid> <description> <p> <a class="missing wiki">ShutdownTime</a> is not correctly written if machine is correctly powered off. Apart from that, using WMI for Vista and 7 still has problems for some users. I'm afraid we'll need to wait for a better solution. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Kai K.</dc:creator> <pubDate>Wed, 20 Jul 2011 14:21:56 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:13 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:13</guid> <description> <p> After updating to 1.47.0 this bug still exists! Please reopen this ticket or create a new one for managed_shared_memory. </p> <p> I use </p> <pre class="wiki">bipc::managed_shared_memory(bipc::create_only, SHARED_MEM_NAME, nSegmentSize); </pre><p> to create shared memory and </p> <pre class="wiki">bipc::managed_shared_memory segment(bipc::open_only, SHARED_MEM_NAME); </pre><p> to acquire it in another thread. My paths: </p> <pre class="wiki">...\boost_interprocess\Select LastBootUpTime from Win32_OperatingSystem\SHARED_MEM_NAME ...\boost_interprocess\20110720031715.524718 </pre><p> First directory is created while creating the shared memory. The second one is created by open it in the other process! The object file is missing in the second directory, therefore the shared memory can not be accessed! </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Kai K.</dc:creator> <pubDate>Thu, 21 Jul 2011 08:58:58 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:14 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:14</guid> <description> <p> Okay I had a deeper look at my problem. </p> <pre class="wiki">inline bool get_wmi_class_attribute( std::wstring&amp; strValue, const wchar_t *wmi_class, const wchar_t *wmi_class_var) { ... while( 0 == pEnumObject-&gt;Next( WBEM_INFINITE_IG, uCount, &amp;pClassObject, &amp;uReturned ) ) { com_releaser&lt;IWbemClassObject_IG&gt; IWbemClassObject_releaser(pClassObject); if ( 0 == pClassObject-&gt;Get( L"LastBootUpTime", 0, &amp;vwchar, 0, 0 ) ){ bRet = true; strValue = vwchar.value.pbstrVal; VariantClear(&amp;vwchar ); break; } } } </pre><p> The call of pEnumObject-&gt;Next(...) fails with WBEM_E_ACCESS_DENIED for the first process. I'm going to check the rights of this process. Currently I have no clue why the access rights are different for the two processes. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Kai K.</dc:creator> <pubDate>Thu, 21 Jul 2011 11:33:07 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:15 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:15</guid> <description> <p> I checked the creation of threads in the first process and a change of the used API (_beginthread &gt; _beginthreadex) did not help. Therefore I search the net for issues corresponding to pEnumObject-&gt;Next(...) and the result WBEM_E_ACCESS_DENIED. I found the <a class="ext-link" href="http://support.microsoft.com/kb/948829"><span class="icon">​</span>KB948829</a> article which recommends the usage of <code>CoSetProxyBlanket</code>. I integrated the call of <code>CoSetProxyBlanket</code> in <code>get_wmi_class_attribute</code> and now my shared memory works again. See the attached patch <a class="missing attachment">win32_api.hpp.#5392.patch</a>. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Kai K.</dc:creator> <pubDate>Thu, 21 Jul 2011 11:34:04 GMT</pubDate> <title>attachment set https://svn.boost.org/trac10/ticket/5392 https://svn.boost.org/trac10/ticket/5392 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">win32_api.hpp.#5392.patch</span> </li> </ul> <p> fixes WBEM_ACCESS_DENIED problem </p> Ticket anonymous Fri, 22 Jul 2011 16:47:45 GMT <link>https://svn.boost.org/trac10/ticket/5392#comment:16 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:16</guid> <description> <p> I got the same problem with boost 1.47.0 too, please re-open this ticket. Thanks. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Sat, 23 Jul 2011 06:22:50 GMT</pubDate> <title>status changed; resolution deleted https://svn.boost.org/trac10/ticket/5392#comment:17 https://svn.boost.org/trac10/ticket/5392#comment:17 <ul> <li><strong>status</strong> <span class="trac-field-old">closed</span> → <span class="trac-field-new">reopened</span> </li> <li><strong>resolution</strong> <span class="trac-field-deleted">fixed</span> </li> </ul> Ticket ccasciano@… Wed, 17 Aug 2011 19:08:53 GMT <link>https://svn.boost.org/trac10/ticket/5392#comment:18 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:18</guid> <description> <p> Will there be a fix for this in 1.48? </p> </description> <category>Ticket</category> </item> <item> <author>ccasciano@…</author> <pubDate>Fri, 19 Aug 2011 14:19:29 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:19 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:19</guid> <description> <p> Will there be a fix for this in 1.48? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Wed, 24 Aug 2011 16:41:55 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:20 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:20</guid> <description> <p> I observed this bug on Windows 7 64 bit and Windows XP SP3 32 bit. Commenting out the </p> <p> #define BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME </p> <p> in </p> <p> boost/interprocess/detail/tmp_dir_helpers.hpp </p> <p> solved the problem for me in Boost 1.47 but its probably evil </p> <p> It basically bypasses the whole check the bootstamp and create a folder named after it stuff which seems to be the root of the problem anyway. Shared memory then survives reboots though but that is no problem for my use case. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Sun, 25 Sep 2011 02:20:12 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:21 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:21</guid> <description> <p> I got the very same problem with 1.47 as well. However, it seems that it has been addressed in the trunk version, since that one works for me without problems, so I suppose it will be fixed in 1.48. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Wed, 26 Oct 2011 08:01:41 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:22 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:22</guid> <description> <p> Still happening in 1.47 on my side too. Does anyone know when a new release will be perform(1.48)? Thanks </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Tue, 08 Nov 2011 22:46:19 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:23 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:23</guid> <description> <p> I have just looked at the Boost.Interprocess temp folder management on Windows, here: </p> <blockquote> <p> <a class="ext-link" href="http://svn.boost.org/svn/boost/trunk/boost/interprocess/detail/tmp_dir_helpers.hpp"><span class="icon">​</span>http://svn.boost.org/svn/boost/trunk/boost/interprocess/detail/tmp_dir_helpers.hpp</a> </p> </blockquote> <p> (function get_tmp_base_dir). The bootstamp has been disabled, which sidesteps the problem of having to find a reliable way to formulate a directory name that is unique for each boot. </p> <p> Because of this, however, a program running with Boost.Interprocess 1.48 will see all its shared memory objects (and probably other Boost.Interprocess constructs) deleted as soon as a program with Boost.Interprocess &lt;=1.47 runs on this machine. </p> <p> So I am suggesting that the "boost_interprocess" created by get_tmp_base_dir() directory (placed inside the Windows shared documents folder) gets renamed so that the folder cleanup done by the create_tmp_and_clean_old*() functions does not wipe 1.48 Boost.Interprocess shared memory (and other) objects. I don't really have a good suggestion for the new name... boost_interprocess_2, I guess; not sure how this aspect of the component is versioned. </p> <p> I know this because I have recently patched my version of Boost 1.47 with the changes I saw coming in 1.48, and I now realize that applications using an earlier version of Boost (1.42, in my case) are cleaning up the boost_interprocess folder. Hope it's not too late for this change to be done. </p> <p> Incidentally, an entry point to let the programmer override this directory name would be useful (so that one can have a real "namespace" for his or her use of Boost.Interprocess objects), but this can be discussed separately. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Sat, 24 Dec 2011 10:27:18 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:24 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:24</guid> <description> <p> I added the patch in trunk, but WMI is still disabled by default. I would be grateful if someone could uncomment </p> <blockquote> <p> <em>#define BOOST_INTERPROCESS_HAS_WINDOWS_KERNEL_BOOTTIME </em></p> </blockquote> <blockquote> <p> <em>#define BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME </em></p> </blockquote> <blockquote> <p> <em>#include &lt;boost/interprocess/detail/win32_api.hpp&gt; </em></p> </blockquote> <p> in boost/interprocess/detail/tmp_dir_helpers.hpp and check if shared memory works with WMI. I have no enough COM knowledge to properly get the bootstamp, so I need some help. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Sun, 25 Mar 2012 20:35:47 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:25 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:25</guid> <description> <p> This makes message_queue almost entirely unusable in some cases, causing Bitcoin-Qt to either freeze (in a nice infinite loop) or refuse to be able to create the message_queue. See patch at <a class="ext-link" href="https://github.com/bitcoin/bitcoin/pull/986/files"><span class="icon">​</span>https://github.com/bitcoin/bitcoin/pull/986/files</a> for a temporary workaround that wfm, though probably not in all cases. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Ion Gaztañaga</dc:creator> <pubDate>Sun, 25 Mar 2012 21:12:23 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:26 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:26</guid> <description> <p> What makes message queue unusable, the original problem or curret Boost 1.49 code uncommenting the defines indicated in the previous comment? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Mon, 26 Mar 2012 14:28:07 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:27 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:27</guid> <description> <p> The problem is, that currently on Windows, there is no path for the mq files created under \boost_interprocess\ but instead all queue files reside in the root. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Mon, 02 Apr 2012 19:22:05 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:28 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:28</guid> <description> <p> Is there a chance to get these enabled as default with the next release: </p> <p> #define BOOST_INTERPROCESS_HAS_WINDOWS_KERNEL_BOOTTIME<br /> #define BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME<br /> #include &lt;boost/interprocess/detail/win32_api.hpp&gt; </p> <p> And to include the fixed version for get_last_bootup_time() from: <a class="ext-link" href="https://github.com/bitcoin/bitcoin/pull/986/files#L0R26"><span class="icon">​</span>https://github.com/bitcoin/bitcoin/pull/986/files#L0R26</a> </p> <p> We really need a clean and working solution, as we want to use cross-platform code :). </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Ion Gaztañaga</dc:creator> <pubDate>Mon, 02 Apr 2012 21:06:30 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:29 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:29</guid> <description> <p> Yes, there is a chance if someone tests the trunk code enabling those defines and assures that solves the problem. And the last_bootup_time patch is not a solution, it's an optimization to cache the value that is not thread-safe, so it's broken. </p> <p> If just enabling those defines in trunk code does not solve the problem, then the problem is still there. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Mon, 02 Apr 2012 22:14:46 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:30 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:30</guid> <description> <p> I'm going to try this tomorrow, thanks for the quick response! </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Tue, 03 Apr 2012 09:19:22 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:31 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:31</guid> <description> <p> I DLed the current trunk version and made a file comparison, am I right, that there are no further changes in tmp_dir_helpers.hpp and win32_api.hpp in comparison to the final 1.49 release? </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Wed, 11 Apr 2012 21:51:21 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:32 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:32</guid> <description> <p> @igaztanaga: After enabling the 3 lines from <a class="ticket" href="https://svn.boost.org/trac10/ticket/5392#comment:28" title="Comment 28">comment:28</a> it seems to work. No need to change get_last_bootup_time()! </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Sat, 09 Jun 2012 23:36:38 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:33 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:33</guid> <description> <p> Uncommenting the define/includes in boost/interprocess/detail/tmp_dir_helpers.hpp works fine on Win7 where it never worked before on Boost 1.49. It also fixes a bug where, if a system crashed while a message_queue is open, trying to open will get in an infinite loop with "socket select error 10022" </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Wed, 13 Jun 2012 19:58:29 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5392#comment:34 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5392#comment:34</guid> <description> <p> Sorry, the socket select error is unrelated, but it does cause an infinite loop and use 100% CPU. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Ion Gaztañaga</dc:creator> <pubDate>Sun, 10 Feb 2013 21:14:44 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/5392#comment:35 https://svn.boost.org/trac10/ticket/5392#comment:35 <ul> <li><strong>status</strong> <span class="trac-field-old">reopened</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> This bug seems to be definitively solved in Boost 1.53. </p> Ticket