daokoder / dao-modules

Dao Standard Modules
http://daovm.net
12 stars 5 forks source link

SIGSEGV - html module #81

Open dumblob opened 8 years ago

dumblob commented 8 years ago

I'm sorry, I don't have time to separate this issue (it's in a code having more than 5000 SLOC). I'll try later. Feel free to check it yourself for the time being.

==7130== Memcheck, a memory error detector
==7130== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==7130== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==7130== Command: dao main.dao
==7130== 
==7130== Thread 5:
==7130== Invalid read of size 8
==7130==    at 0x558BF64: DString_Assign (in /usr/lib/libdao.so)
==7130==    by 0x558BE9A: DString_Copy (in /usr/lib/libdao.so)
==7130==    by 0x55849CD: ??? (in /usr/lib/libdao.so)
==7130==    by 0x55861E5: DList_PushBack (in /usr/lib/libdao.so)
==7130==    by 0x9CF66A9: DaoHtmlContext_AddContent (in /usr/lib/dao/modules/web/libdao_html.so)
==7130==    by 0x9CF6D21: ??? (in /usr/lib/dao/modules/web/libdao_html.so)
==7130==    by 0x55ADD18: DaoProcess_CallFunction (in /usr/lib/libdao.so)
==7130==    by 0x55BE94D: ??? (in /usr/lib/libdao.so)
==7130==    by 0x55BEDEE: DaoProcess_DoCall2 (in /usr/lib/libdao.so)
==7130==    by 0x55C0217: ??? (in /usr/lib/libdao.so)
==7130==    by 0x55B0452: DaoProcess_Start (in /usr/lib/libdao.so)
==7130==    by 0x55B8967: DaoProcess_Execute (in /usr/lib/libdao.so)
==7130==  Address 0x100000005 is not stack'd, malloc'd or (recently) free'd
==7130== 
==7130== 
==7130== Process terminating with default action of signal 11 (SIGSEGV)
==7130==  Access not within mapped region at address 0x100000005
==7130==    at 0x558BF64: DString_Assign (in /usr/lib/libdao.so)
==7130==    by 0x558BE9A: DString_Copy (in /usr/lib/libdao.so)
==7130==    by 0x55849CD: ??? (in /usr/lib/libdao.so)
==7130==    by 0x55861E5: DList_PushBack (in /usr/lib/libdao.so)
==7130==    by 0x9CF66A9: DaoHtmlContext_AddContent (in /usr/lib/dao/modules/web/libdao_html.so)
==7130==    by 0x9CF6D21: ??? (in /usr/lib/dao/modules/web/libdao_html.so)
==7130==    by 0x55ADD18: DaoProcess_CallFunction (in /usr/lib/libdao.so)
==7130==    by 0x55BE94D: ??? (in /usr/lib/libdao.so)
==7130==    by 0x55BEDEE: DaoProcess_DoCall2 (in /usr/lib/libdao.so)
==7130==    by 0x55C0217: ??? (in /usr/lib/libdao.so)
==7130==    by 0x55B0452: DaoProcess_Start (in /usr/lib/libdao.so)
==7130==    by 0x55B8967: DaoProcess_Execute (in /usr/lib/libdao.so)
==7130==  If you believe this happened as a result of a stack
==7130==  overflow in your program's main thread (unlikely but
==7130==  possible), you can try to increase the size of the
==7130==  main thread stack using the --main-stacksize= flag.
==7130==  The main thread stack size used in this run was 8388608.
==7130== 
==7130== HEAP SUMMARY:
==7130==     in use at exit: 15,544,225 bytes in 186,387 blocks
==7130==   total heap usage: 832,696 allocs, 646,309 frees, 86,725,091 bytes allocated
==7130== 
==7130== LEAK SUMMARY:
==7130==    definitely lost: 0 bytes in 0 blocks
==7130==    indirectly lost: 0 bytes in 0 blocks
==7130==      possibly lost: 2,591,040 bytes in 26,548 blocks
==7130==    still reachable: 12,953,185 bytes in 159,839 blocks
==7130==         suppressed: 0 bytes in 0 blocks
==7130== Rerun with --leak-check=full to see details of leaked memory
==7130== 
==7130== For counts of detected and suppressed errors, rerun with: -v
==7130== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Killed
dumblob commented 8 years ago

Well, it seems that it has nothing to do with the html module, because it happens when accessing a collected list created using .collect { X in preferred_order ? (@T)(id = X,) : (@T)none } applied to a map having signature map<string, int>.

daokoder commented 8 years ago

I cannot reproduce the bug. Please recompile Dao in debug mode and run it through valgrind to produce the error information. Thanks.