查看单个帖子
旧 2009-05-04, 06:31 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】crash in odinterlockedincremen

crash in odinterlockedincrement
crash in odinterlockedincrement
hi,
maybe someone can help:
i just got a crash in the function odinterlockedincrement(...) while opening a lot of dwg files in multithreading mode.
to get a preview of all files in a folder, each file is opened in it's own thread. as long as i do not intercept while loading all is fine.
but when i try to access one file which has already been processed, while other files are still being loaded, the crash happens in the above function.
any ideas?
torsten
can you show call stack?
vladimir
hi,
this is my call stack after the crash happened:
kernel32.dll!77e9bc81()
[frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
kernel32.dll!77e9bc81()
msvcr80d.dll!malloc(unsigned int nsize=1223476) line 154 + 0x15 bytes c++
iodirectdwg.dll!odinterlockedincrement(volatile int * dest=0x02a925cd) line 184 + 0x7 bytes c++
0012b910()
iodirectdwg.dll!creaddwg:pensection(cvpfilter::e vpfsection vpfsection=vpf_color_section, unsigned int * puientries=0x00000000) line 940 + 0x8 bytes c++
the last line is my function where readfile(...) is called.
unlike i wrote in my first post the loading process is not a multithreaded one: it is a separate thread which loads the dwg files, but one after the other. only when i start a parallel loading in an extra thread the crash happens.
so it seems that my dll is not thread-safe.
however, i am linking the md libs, and i am building with the /md flag.
have i missed something?
torsten
well, parallel reading of several files should work correctly - it is one of the few supported cases of multithreaded dd usage. can you create a sample for us to reproduce the problem?
vladimir
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)