Hi! I have some problems with memory allocation.
I create new thread in cidir storage and call malloc(), and it fails to allocate
even 1 byte.
What can cause this problem?
Dovecot vesrion is: 2.1.10 (130563b592c9+)
Sample code looks like this (I also link to pthread with: -pthread):
#define TEST_MALLOC() \
{ \
??? void *p; \
??? p = malloc(1); \
??? if (!p) { \
??? ??? i_info("%s: malloc() failed", __FUNCTION__); \
??? } else { \
??? ??? i_info("%s: malloc() succeeded", __FUNCTION__); \
??? ??? free(p); \
??? } \
}
#include <pthread.h>
static void *test_pthread_malloc_func(void *data_)
{
??? TEST_MALLOC();
??? return NULL;
}
static void test_pthread_malloc()
{
??? int ret;
??? pthread_t tid;
??? TEST_MALLOC();
??? ret = pthread_create(&tid, NULL, test_pthread_malloc_func, NULL);
??? if (ret) {
??????? i_info("failed to start thread");
??? } else {
??????? pthread_join(tid, NULL);
??? }
}
I call test_pthread_malloc() function.
It produces following output:
Oct 11 12:56:15 imap(guest): Info: test_pthread_malloc: malloc() succeeded
Oct 11 12:56:15 imap(guest): Info: test_pthread_malloc_func: malloc() failed