0

I get an unhandled exception if I close my program using Poco mutexes.

I use a global

 Poco::Mutex mymutex ;

in my cpp file, because I have a static class for logging (I also tried to declare it as a static member, but I got the same error).

The relevant part of my code (it's a static function):

void Log::log(std::string message)
{
    try
    {
        Poco::Mutex::ScopedLock lock(mymutex);

        std::ofstream f("log.txt", std::ios_base::app) ;
        f << message << std::endl ;
        f.close() ;
    }
    catch (...)
    {
    }
}

This part of the code works great in my program (there are no lines on each other like before using mutexes), but after I close my program, I get the following error message:

Unhandled exception at 0x77c3a710 in myprogram.exe: 0xC0000005: 
Access violation writing location 0x00000014.

I also tried to use mymutex.lock() and mymutex.unlock() before and after writing to the file, but I got the same error.

And I also tried this code:

while(!mymutex.tryLock())
    Poco::Thread::sleep(30);

but it resulted an infinite loop, the program has not stopped after closing its window.

I use Visual Studio 2010 and Poco 1.4.

4

0 に答える 0