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:59:34 PST 2016


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)):
> #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?

I entirely removed loging functionality but still have another 
error:

(gdb) thread apply all bt

Thread 2 (Thread 0x7ffff2cb3700 (LWP 31995)):
#0  sem_wait () at 
../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:85
#1  0x0000000000846aaf in core.thread.suspend() ()
#2  0x0000000000838a97 in thread_suspendAll ()
#3  0x000000000082b3b8 in gc.gc.Gcx.fullcollect() ()
#4  0x0000000000829a6d in gc.gc.Gcx.bigAlloc() ()
#5  0x00000000008272d5 in gc.gc.GC.malloc() ()
#6  0x00000000007f2cfc in gc_malloc ()
#7  0x00000000007f0020 in core.memory.GC.malloc() ()
#8  0x00000000008317ff in 
std.array.__T14arrayAllocImplVbi0TAhTmZ.arrayAllocImpl() ()
#9  0x00000000008317d1 in 
std.array.__T18uninitializedArrayTAhTymZ.uninitializedArray() ()
#10 0x0000000000805d54 in std.file.readImpl() ()
#11 0x0000000000780179 in std.file.__T4readTAyaZ.read() ()
#12 0x0000000000732c6c in mkk_site.utils.getPageTemplate() ()
#13 0x0000000000732933 in mkk_site.utils.getGeneralTemplate() ()
#14 0x000000000072e47f in 
mkk_site.uri_page_router.MKK_Site_URIPageRouter.renderMessageBody() ()
#15 0x000000000072e3aa in 
mkk_site.uri_page_router.MKK_Site_URIPageRouter.customProcessRequest() ()
#16 0x000000000079f033 in 
webtank.net.http.handler.EventBasedHTTPHandler.processRequest() ()
#17 0x000000000079f273 in 
webtank.net.http.handler.HTTPRouter.customProcessRequest() ()
#18 0x000000000079f033 in 
webtank.net.http.handler.EventBasedHTTPHandler.processRequest() ()
#19 0x0000000000754d82 in 
webtank.net.web_server.WorkingThread._work() ()
#20 0x0000000000824e0e in core.thread.Thread.run() ()
#21 0x0000000000824a52 in thread_entryPoint ()
#22 0x00007ffff75ba182 in start_thread (arg=0x7ffff2cb3700) at 
pthread_create.c:312
#23 0x00007ffff70df47d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 1 (Thread 0x7ffff7fbd980 (LWP 31988)):
#0  0x00007ffff75c16dd in accept () at 
../sysdeps/unix/syscall-template.S:81
#1  0x00000000008113e4 in std.socket.Socket.accept() ()
#2  0x00000000007548d7 in 
webtank.net.web_server.WebServer.start() ()
#3  0x000000000071819d in D main ()
#4  0x00000000007f4ccb in rt.dmain2._d_run_main() ()
#5  0x00000000007f4c21 in rt.dmain2._d_run_main() ()
#6  0x00000000007f4c87 in rt.dmain2._d_run_main() ()
#7  0x00000000007f4c21 in rt.dmain2._d_run_main() ()
#8  0x00000000007f4b7e in _d_run_main ()
#9  0x000000000072540e in main ()
(gdb)

Notice that there is only 2 threads. I was having two loging 
threads each loging to it's individual file.


More information about the Digitalmars-d-learn mailing list