From b43920212e20b2169254b567266037f15485a02a Mon Sep 17 00:00:00 2001 From: blacksirius Date: Mon, 11 Jun 2012 21:51:09 +0000 Subject: Fixed bugreport:5989 map-server crashes. Bug in Detail: - Uninitialized Critical Section used in Condition Variables.. - Possible Stack Overflow in async allocator Thread when build as Release Fixed by: - Initialize Critical Section for Condition Var's waiter count lock properly - Increased Stack Size of Async. Allocator Thread to 1MB (previously 512KB) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16269 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/common/mempool.c | 2 +- src/common/mutex.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src/common') diff --git a/src/common/mempool.c b/src/common/mempool.c index ab401f5e0..35b03034d 100644 --- a/src/common/mempool.c +++ b/src/common/mempool.c @@ -156,7 +156,7 @@ void mempool_init(){ l_async_lock = ramutex_create(); l_async_cond = racond_create(); - l_async_thread = rathread_createEx(mempool_async_allocator, NULL, 512*1024, RAT_PRIO_NORMAL); + l_async_thread = rathread_createEx(mempool_async_allocator, NULL, 1024*1024, RAT_PRIO_NORMAL); if(l_async_thread == NULL){ ShowFatalError("mempool_init: cannot spawn Async Allocator Thread.\n"); exit(EXIT_FAILURE); diff --git a/src/common/mutex.c b/src/common/mutex.c index 367574248..6b4f55119 100644 --- a/src/common/mutex.c +++ b/src/common/mutex.c @@ -133,6 +133,7 @@ racond racond_create(){ c->nWaiters = 0; c->events[ EVENT_COND_SIGNAL ] = CreateEvent( NULL, FALSE, FALSE, NULL ); c->events[ EVENT_COND_BROADCAST ] = CreateEvent( NULL, TRUE, FALSE, NULL ); + InitializeCriticalSection( &c->waiters_lock ); #else pthread_cond_init(&c->hCond, NULL); #endif @@ -145,7 +146,7 @@ void racond_destroy( racond c ){ #ifdef WIN32 CloseHandle( c->events[ EVENT_COND_SIGNAL ] ); CloseHandle( c->events[ EVENT_COND_BROADCAST ] ); - InitializeCriticalSection( &c->waiters_lock ); + DeleteCriticalSection( &c->waiters_lock ); #else pthread_cond_destroy(&c->hCond); #endif -- cgit v1.2.3-60-g2f50