www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Need some help about error that I don't understand

reply Uranuz <neuranuz gmail.com> writes:
In my custom multithreaded web-server (non vibe-based) I got 
error that is strange for me. I've was looking for a reason 
running app under GDB, but I don't understand how to interpret 
what I've got.

It's interesting that it fails (without any error or segfault 
message) in the case when null reference to class object passed 
into static method of class. When it's not null all goes well. So 
there is backtrace:

//---------------
(gdb) thread apply all bt

Thread 4 (Thread 0x7ffff1cb1700 (LWP 30869)):

../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:85








std.array.__T14arrayAllocImplVbi0TAhTmZ.arrayAllocImpl() ()

std.array.__T18uninitializedArrayTAhTymZ.uninitializedArray() ()





mkk_site.uri_page_router.MKK_Site_URIPageRouter.renderMessageBody() ()

mkk_site.uri_page_router.MKK_Site_URIPageRouter.customProcessRequest() ()

webtank.net.http.handler.EventBasedHTTPHandler.processRequest() ()

webtank.net.http.handler.HTTPRouter.customProcessRequest() ()

webtank.net.http.handler.EventBasedHTTPHandler.processRequest() ()

webtank.net.web_server.WorkingThread._work() ()



pthread_create.c:312

../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 3 (Thread 0x7ffff24b2700 (LWP 30860)):

../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135

/lib/x86_64-linux-gnu/libpthread.so.0

(mutex=0xac58a0 <gc.gc.GC.mutexStorage()+16>)
     at ../nptl/pthread_mutex_lock.c:114






std.array.__T14arrayAllocImplVbi0TAaTmZ.arrayAllocImpl() ()

std.array.__T18uninitializedArrayTAaTmZ.uninitializedArray() ()

std.array.__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TmZ7toCharsFNaNbNi
fmZ6ResultZ.array() ()

std.array.__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TmZ7toCharsFNaNbNi
fmZ6ResultZ.array() ()




webtank.common.logger.FileLogger.writeEvent() ()

webtank.common.logger.ThreadedLogger._run() ()

std.concurrency.Message.__T3mapTDFS7webtank6common6logger8LogEventZvZ.map() ()

std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15Owne
TerminatedZvZ.get() ()

std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15Owne
TerminatedZvZ.get() ()

std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15Owne
TerminatedZvZ.get() ()

std.concurrency.__T7receiveTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15OwnerTer
inatedZvZ.receive() ()

webtank.common.logger.ThreadedLogger._run() ()

std.concurrency.__T6_spawnTPFS3std11concurrency3TidOC7webtank6common6logger6LoggerZvTS3std11concurrency3TidTOC7webtank6common6log
er6LoggerZ._spawn() ()
---Type <return> to continue, or q <return> to quit---



pthread_create.c:312

../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 2 (Thread 0x7ffff2cb3700 (LWP 30859)):

../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185


std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15Owne
TerminatedZvZ.get() ()

std.concurrency.__T7receiveTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15OwnerTer
inatedZvZ.receive() ()

webtank.common.logger.ThreadedLogger._run() ()

std.concurrency.__T6_spawnTPFS3std11concurrency3TidOC7webtank6common6logger6LoggerZvTS3std11concurrency3TidTOC7webtank6common6log
er6LoggerZ._spawn() ()



pthread_create.c:312

../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 1 (Thread 0x7ffff7fbd980 (LWP 30855)):

../sysdeps/unix/syscall-template.S:81


webtank.net.web_server.WebServer.start() ()







(gdb)

//---------------

In my app I have loger thread that receive messages through 
std.concurrency.receive and writes them into file. Could it be 
the source of problems?
Feb 05 2016
parent Uranuz <neuranuz gmail.com> writes:
On Friday, 5 February 2016 at 17:39:55 UTC, Uranuz wrote:
 In my custom multithreaded web-server (non vibe-based) I got 
 error that is strange for me. I've was looking for a reason 
 running app under GDB, but I don't understand how to interpret 
 what I've got.

 It's interesting that it fails (without any error or segfault 
 message) in the case when null reference to class object passed 
 into static method of class. When it's not null all goes well. 
 So there is backtrace:

 //---------------
 (gdb) thread apply all bt

 Thread 4 (Thread 0x7ffff1cb1700 (LWP 30869)):

 ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:85








 std.array.__T14arrayAllocImplVbi0TAhTmZ.arrayAllocImpl() ()

 std.array.__T18uninitializedArrayTAhTymZ.uninitializedArray() ()





 mkk_site.uri_page_router.MKK_Site_URIPageRouter.renderMessageBody() ()

 mkk_site.uri_page_router.MKK_Site_URIPageRouter.customProcessRequest() ()

 webtank.net.http.handler.EventBasedHTTPHandler.processRequest() 
 ()

 webtank.net.http.handler.HTTPRouter.customProcessRequest() ()

 webtank.net.http.handler.EventBasedHTTPHandler.processRequest() 
 ()

 webtank.net.web_server.WorkingThread._work() ()



 pthread_create.c:312

 ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

 Thread 3 (Thread 0x7ffff24b2700 (LWP 30860)):

 ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135

 /lib/x86_64-linux-gnu/libpthread.so.0

 (mutex=0xac58a0 <gc.gc.GC.mutexStorage()+16>)
     at ../nptl/pthread_mutex_lock.c:114

 ()





 std.array.__T14arrayAllocImplVbi0TAaTmZ.arrayAllocImpl() ()

 std.array.__T18uninitializedArrayTAaTmZ.uninitializedArray() ()

 std.array.__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TmZ7toCharsFNaNbNi
fmZ6ResultZ.array() ()

 std.array.__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TmZ7toCharsFNaNbNi
fmZ6ResultZ.array() ()




 webtank.common.logger.FileLogger.writeEvent() ()

 webtank.common.logger.ThreadedLogger._run() ()

 std.concurrency.Message.__T3mapTDFS7webtank6common6logger8LogEventZvZ.map() ()

 std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15Owne
TerminatedZvZ.get() ()

 std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15Owne
TerminatedZvZ.get() ()

 std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15Owne
TerminatedZvZ.get() ()

 std.concurrency.__T7receiveTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15OwnerTer
inatedZvZ.receive() ()

 webtank.common.logger.ThreadedLogger._run() ()

 std.concurrency.__T6_spawnTPFS3std11concurrency3TidOC7webtank6common6logger6LoggerZvTS3std11concurrency3TidTOC7webtank6common6log
er6LoggerZ._spawn() ()
 ---Type <return> to continue, or q <return> to quit---



 pthread_create.c:312

 ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

 Thread 2 (Thread 0x7ffff2cb3700 (LWP 30859)):

 ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185

 ()

 std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15Owne
TerminatedZvZ.get() ()

 std.concurrency.__T7receiveTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15OwnerTer
inatedZvZ.receive() ()

 webtank.common.logger.ThreadedLogger._run() ()

 std.concurrency.__T6_spawnTPFS3std11concurrency3TidOC7webtank6common6logger6LoggerZvTS3std11concurrency3TidTOC7webtank6common6log
er6LoggerZ._spawn() ()



 pthread_create.c:312

 ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

 Thread 1 (Thread 0x7ffff7fbd980 (LWP 30855)):

 ../sysdeps/unix/syscall-template.S:81


 webtank.net.web_server.WebServer.start() ()







 (gdb)

 //---------------

 In my app I have loger thread that receive messages through 
 std.concurrency.receive and writes them into file. Could it be 
 the source of problems?
I entirely removed loging functionality but still have another error: (gdb) thread apply all bt Thread 2 (Thread 0x7ffff2cb3700 (LWP 31995)): ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:85 std.array.__T14arrayAllocImplVbi0TAhTmZ.arrayAllocImpl() () std.array.__T18uninitializedArrayTAhTymZ.uninitializedArray() () mkk_site.uri_page_router.MKK_Site_URIPageRouter.renderMessageBody() () mkk_site.uri_page_router.MKK_Site_URIPageRouter.customProcessRequest() () webtank.net.http.handler.EventBasedHTTPHandler.processRequest() () webtank.net.http.handler.HTTPRouter.customProcessRequest() () webtank.net.http.handler.EventBasedHTTPHandler.processRequest() () webtank.net.web_server.WorkingThread._work() () pthread_create.c:312 ../sysdeps/unix/sysv/linux/x86_64/clone.S:111 Thread 1 (Thread 0x7ffff7fbd980 (LWP 31988)): ../sysdeps/unix/syscall-template.S:81 webtank.net.web_server.WebServer.start() () (gdb) Notice that there is only 2 threads. I was having two loging threads each loging to it's individual file.
Feb 05 2016