Hi,

 

I am using managed_shared_memory in my program. The program runs fine if only one instance is used. However if more than one instance is used then one instance dies randomly.

The instance  dies at the following code :

 

char_string  key_object(keyHashStr.c_str(), alloc_inst3);

             

The sample program is :

 

-----------------------

#include <boost/interprocess/managed_shared_memory.hpp>

#include <boost/interprocess/allocators/allocator.hpp>

#include <boost/interprocess/containers/string.hpp>

#include <string>

#include <iostream>

 

#define RESERVED_BUFFER_SIZE_WRITE (8 * 0x0100000)

 

namespace bip = boost::interprocess;

 

//Typedefs of allocators and containers

typedef bip::allocator<char, bip::managed_shared_memory::segment_manager> char_allocator;

typedef bip::basic_string<char, std::char_traits<char>, char_allocator>   char_string;

 

int main()

{

       bip::managed_shared_memory m_sharedMemUsage(bip::open_or_create, "MyBookkeeper", 2 * RESERVED_BUFFER_SIZE_WRITE);

 

       char_allocator alloc_inst3(m_sharedMemUsage.get_segment_manager());

       for (int count = 0; count < 100000; ++count) {

              char_string key_obect("AAAAAAAAAAAAAAAAAAAAAAA", alloc_inst3);

       }

}

-----------------------

 

Please let me know if I am missing something in this program.

 

Regards,
Abhishek