Need some help about error that I don't understand

Uranuz via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Feb 5 09:39:55 PST 2016


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)):
#0  sem_wait () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:85
#1  0x000000000084747f in core.thread.suspend() ()
#2  0x0000000000839467 in thread_suspendAll ()
#3  0x000000000082bd88 in gc.gc.Gcx.fullcollect() ()
#4  0x000000000082a43d in gc.gc.Gcx.bigAlloc() ()
#5  0x0000000000827ca5 in gc.gc.GC.malloc() ()
#6  0x00000000007f36cc in gc_malloc ()
#7  0x00000000007f09f0 in core.memory.GC.malloc() ()
#8  0x00000000008321cf in 
std.array.__T14arrayAllocImplVbi0TAhTmZ.arrayAllocImpl() ()
#9  0x00000000008321a1 in 
std.array.__T18uninitializedArrayTAhTymZ.uninitializedArray() ()
#10 0x0000000000806724 in std.file.readImpl() ()
#11 0x0000000000780b49 in std.file.__T4readTAyaZ.read() ()
#12 0x000000000073357c in mkk_site.utils.getPageTemplate() ()
#13 0x0000000000733243 in mkk_site.utils.getGeneralTemplate() ()
#14 0x000000000072ed8f in 
mkk_site.uri_page_router.MKK_Site_URIPageRouter.renderMessageBody() ()
#15 0x000000000072ecba in 
mkk_site.uri_page_router.MKK_Site_URIPageRouter.customProcessRequest() ()
#16 0x000000000079fa03 in 
webtank.net.http.handler.EventBasedHTTPHandler.processRequest() ()
#17 0x000000000079fc43 in 
webtank.net.http.handler.HTTPRouter.customProcessRequest() ()
#18 0x000000000079fa03 in 
webtank.net.http.handler.EventBasedHTTPHandler.processRequest() ()
#19 0x0000000000755692 in 
webtank.net.web_server.WorkingThread._work() ()
#20 0x00000000008257de in core.thread.Thread.run() ()
#21 0x0000000000825422 in thread_entryPoint ()
#22 0x00007ffff75ba182 in start_thread (arg=0x7ffff1cb1700) at 
pthread_create.c:312
#23 0x00007ffff70df47d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 3 (Thread 0x7ffff24b2700 (LWP 30860)):
#0  __lll_lock_wait () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007ffff75bc672 in _L_lock_953 () from 
/lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007ffff75bc4da in __GI___pthread_mutex_lock 
(mutex=0xac58a0 <gc.gc.GC.mutexStorage()+16>)
     at ../nptl/pthread_mutex_lock.c:114
#3  0x00000000007f33b1 in core.sync.mutex.Mutex.lock_nothrow() ()
#4  0x0000000000827445 in gc.gc.GCMutex.lock() ()
#5  0x0000000000827c52 in gc.gc.GC.malloc() ()
#6  0x00000000007f36cc in gc_malloc ()
#7  0x00000000007f09f0 in core.memory.GC.malloc() ()
#8  0x000000000075985c in 
std.array.__T14arrayAllocImplVbi0TAaTmZ.arrayAllocImpl() ()
#9  0x0000000000759839 in 
std.array.__T18uninitializedArrayTAaTmZ.uninitializedArray() ()
#10 0x000000000075981d in 
std.array.__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TmZ7toCharsFNaNbNiNfmZ6ResultZ.array() ()
#11 0x000000000075978b in 
std.array.__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TmZ7toCharsFNaNbNiNfmZ6ResultZ.array() ()
#12 0x0000000000719122 in std.conv.__T6toImplTAyaTmZ.toImpl() ()
#13 0x00000000007190b3 in std.conv.__T6toImplTAyaTmZ.toImpl() ()
#14 0x0000000000719099 in std.conv.__T2toTAyaZ.__T2toTmZ.to() ()
#15 0x00000000007d1f04 in 
webtank.common.logger.FileLogger.writeEvent() ()
#16 0x00000000007d2183 in 
webtank.common.logger.ThreadedLogger._run() ()
#17 0x00000000007d4141 in 
std.concurrency.Message.__T3mapTDFS7webtank6common6logger8LogEventZvZ.map() ()
#18 0x00000000007d3a79 in 
std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15OwnerTerminatedZvZ.get() ()
#19 0x00000000007d3e79 in 
std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15OwnerTerminatedZvZ.get() ()
#20 0x00000000007d39a6 in 
std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15OwnerTerminatedZvZ.get() ()
#21 0x00000000007d380b in 
std.concurrency.__T7receiveTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15OwnerTerminatedZvZ.receive() ()
#22 0x00000000007d215b in 
webtank.common.logger.ThreadedLogger._run() ()
#23 0x00000000007d237d in 
std.concurrency.__T6_spawnTPFS3std11concurrency3TidOC7webtank6common6logger6LoggerZvTS3std11concurrency3TidTOC7webtank6common6logger6LoggerZ._spawn() ()
---Type <return> to continue, or q <return> to quit---
#24 0x00000000008257de in core.thread.Thread.run() ()
#25 0x0000000000825422 in thread_entryPoint ()
#26 0x00007ffff75ba182 in start_thread (arg=0x7ffff24b2700) at 
pthread_create.c:312
#27 0x00007ffff70df47d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 2 (Thread 0x7ffff2cb3700 (LWP 30859)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x0000000000826f21 in core.sync.condition.Condition.wait() ()
#2  0x00000000007d3944 in 
std.concurrency.MessageBox.__T3getTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15OwnerTerminatedZvZ.get() ()
#3  0x00000000007d380b in 
std.concurrency.__T7receiveTDFS7webtank6common6logger8LogEventZvTDFNaNbNiNfS7webtank6common6logger14ThreadedLogger10LogStopMsgZvTDFC3std11concurrency15OwnerTerminatedZvZ.receive() ()
#4  0x00000000007d215b in 
webtank.common.logger.ThreadedLogger._run() ()
#5  0x00000000007d237d in 
std.concurrency.__T6_spawnTPFS3std11concurrency3TidOC7webtank6common6logger6LoggerZvTS3std11concurrency3TidTOC7webtank6common6logger6LoggerZ._spawn() ()
#6  0x00000000008257de in core.thread.Thread.run() ()
#7  0x0000000000825422 in thread_entryPoint ()
#8  0x00007ffff75ba182 in start_thread (arg=0x7ffff2cb3700) at 
pthread_create.c:312
#9  0x00007ffff70df47d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 1 (Thread 0x7ffff7fbd980 (LWP 30855)):
#0  0x00007ffff75c16dd in accept () at 
../sysdeps/unix/syscall-template.S:81
#1  0x0000000000811db4 in std.socket.Socket.accept() ()
#2  0x00000000007551e7 in 
webtank.net.web_server.WebServer.start() ()
#3  0x0000000000718a45 in D main ()
#4  0x00000000007f569b in rt.dmain2._d_run_main() ()
#5  0x00000000007f55f1 in rt.dmain2._d_run_main() ()
#6  0x00000000007f5657 in rt.dmain2._d_run_main() ()
#7  0x00000000007f55f1 in rt.dmain2._d_run_main() ()
#8  0x00000000007f554e in _d_run_main ()
#9  0x0000000000725d1e in main ()
(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?





More information about the Digitalmars-d-learn mailing list