crash using boost::interprocess
Hello,
I'm using boost::interprocess to share config information between processes
on windows platform. It random crash on custom pc.
I only have a minidump dump, here is the stack output by windbg:
001df6b0 65e49d45 001df758 00302c48 7721ee1e
XXXXPlugin!boost::interprocess::detail::emulation_recursive_mutex::lock+0xc
001df6f8 65e49c42 06750038 65e7b8b4 06750028
XXXXPlugin!boost::interprocess::scoped_lockboost::interprocess::interprocess_recursive_mutex::lock+0x15
001df720 65e494c1 06750008 00000001 6c1274eb
XXXXPlugin!boost::interprocess::segment_manager
El 02/11/2011 8:00, nevergone . escribió:
Hello,
I'm using boost::interprocess to share config information between processes on windows platform. It random crash on custom pc. I only have a minidump dump, here is the stack output by windbg:
It's hard to say, but using experimental detail classes ("emulation_recursive_mutex") is not supported. They are ongoin experiments. Ion
HI, igaztanaga
I don't use any of experimental detail classes
like("emulation_recursive_mutex").
I'm using wmanaged_windows_shared_memory::find method to find a element,
and find method eventually
will call emulation_recursive_mutex::lock. The stack cannot see find due to
compile optimization.
The code is like this:
namespace BOOSTIP = ::boost::interprocess;
typedef struct _CACHE_ITEM
{
BOOSTIP::offset_ptr<BYTE> CacheValue;
ULONG CacheLength;
ULONG CacheMaxLength;
volatile BOOL CacheDirty;
_CACHE_ITEM()
{
CacheValue = 0;
CacheLength = 0;
CacheMaxLength = 0;
CacheDirty = FALSE;
}
} CACHE_ITEM, *PCACHE_ITEM;
BOOL
CConfigCache::Read(__in LPCTSTR lpszName,
__out PVOID lpValue,
__in DWORD dwSize,
__out_opt PDWORD dwRetSize /*= NULL */)
{
try
{
if (CanIAccessCache())
{
CScopeGuard<CMutex> guard(m_FunctionLock);
//
// ....... ignore some useless code
//
PCACHE_ITEM CacheItem = m_SharedMemory.find
El 02/11/2011 8:00, nevergone . escribió:
Hello,
I'm using boost::interprocess to share config information between processes on windows platform. It random crash on custom pc. I only have a minidump dump, here is the stack output by windbg:
It's hard to say, but using experimental detail classes ("emulation_recursive_mutex") is not supported. They are ongoin experiments.
Ion ______________________________**_________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/**mailman/listinfo.cgi/boost-**usershttp://lists.boost.org/mailman/listinfo.cgi/boost-users
El 03/11/2011 14:27, nevergone . escribió:
HI, igaztanaga I don't use any of experimental detail classes like("emulation_recursive_mutex"). I'm using wmanaged_windows_shared_memory::find method to find a element, and find method eventually will call emulation_recursive_mutex::lock. The stack cannot see find due to compile optimization.
Sorry, I was confused, I thought it was using robust emulation code. It's impossible to say what's happening if we don't have a crashing example program. Ion
OK, igaztanaga, can you reivew my code?
I will send my code to your gmail.
thx.
2011/11/4 Ion Gaztañaga
El 03/11/2011 14:27, nevergone . escribió:
HI, igaztanaga
I don't use any of experimental detail classes like("emulation_recursive_**mutex"). I'm using wmanaged_windows_shared_**memory::find method to find a element, and find method eventually will call emulation_recursive_mutex::**lock. The stack cannot see find due to compile optimization.
Sorry, I was confused, I thought it was using robust emulation code. It's impossible to say what's happening if we don't have a crashing example program.
Ion ______________________________**_________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/**mailman/listinfo.cgi/boost-**usershttp://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (3)
-
igaztanaga@gmail.com
-
Ion Gaztañaga
-
nevergone .