Author |
Topic  |
|
kontraband
8 Posts |
Posted - 05 Apr 2007 : 07:52:13
|
Hi! We are using QC for presentation of weather data with 20-30 graph windows redrawn once a minute. Since it is a critical system it's running 24-7 but after a while, 10 days or more we're experiencing crashes and the crash dump trace gives us this information:
FAULTING_IP: WCT32DR3!WGSaveASCIIDataSet+8d7 1001fb81 dd04d0 fld qword ptr [eax+edx*8]
EXCEPTION_RECORD: ffffffff -- (.exr ffffffffffffffff) ExceptionAddress: 1001fb81 (WCT32DR3!WGSaveASCIIDataSet+0x000008d7) ExceptionCode: c0000005 (Access violation) ExceptionFlags: 00000000 NumberParameters: 2 Parameter[0]: 00000000 Parameter[1]: 01b6e000 Attempt to read from address 01b6e000
DEFAULT_BUCKET_ID: WRONG_SYMBOLS
PROCESS_NAME: AwosWst.exe
FAULTING_MODULE: 7c900000 ntdll
DEBUG_FLR_IMAGE_TIMESTAMP: 3db9565f
ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx" referenced memory at "0x%08lx". The memory could not be "%s".
READ_ADDRESS: 01b6e000
BUGCHECK_STR: ACCESS_VIOLATION
LAST_CONTROL_TRANSFER: from 1001b624 to 1001fb81
STACK_TEXT: WARNING: Stack unwind information not available. Following frames may be wrong. 0012fb18 1001b624 02a5a008 001d26b8 018f66b0 WCT32DR3!WGSaveASCIIDataSet+0x8d7 0012fb98 10054e3d 02a5a008 80010577 80010577 WCT32DR3!DrawMark+0x1214 0012fbb8 10054ea8 02a5a008 001d26b8 00000000 WCT32DR3!DestroyCalcData+0x14b 0012fbe4 1000b088 02a5a008 001d26b8 0000000e WCT32DR3!DestroyCalcData+0x1b6 0012fc0c 004d4191 02a5a008 00000008 0000000e WCT32DR3!WGReconnectDataSet+0x39
and the info for the WCT32DR3.DLL: Image name: WCT32DR3.DLL Timestamp: Fri Oct 25 14:34:07 2002 (3DB9565F) CheckSum: 00000000 ImageSize: 00084000 File version: 1.0.0.1 Product version: 1.0.0.1 File flags: 0 (Mask 3F) File OS: 40004 NT Win32 File type: 2.0 Dll File date: 00000000.00000000 Translations: 0409.04b0 CompanyName: Quinn-Curtis, Inc. ProductName: Quinn-Curtis, Inc. Wct32d InternalName: Wct32d OriginalFilename: Wct32d.dll ProductVersion: 1, 0, 0, 1 FileVersion: 1, 0, 0, 1 FileDescription: Wct32d LegalCopyright: Copyright © 1998
So from this I can figure out that our application calls WGReconnectDataSet and in WGSaveASCIIDataSet there is a memory access violation or Buffer overrun. So far I havent been able to reproduce the error in any other way than to start the system and wait for 2 weeks.
Could it have something to do with when the old dataset is deleted? Since the WGReconnectDataSet is called every minute it will be called 60*24*14 ~ 20000 times before crashing. We havent detected any memoryleak.
Has anyone seen this before?
Best regards, R.Gustafsson
Peace! |
|
quinncurtis
1164 Posts |
Posted - 05 Apr 2007 : 08:27:49
|
Sorry, but there isn't much we can tell from this information. Are you running different aspects of the program accessing our DLL's on different threads? Does the dataset continually grow, or does it more or less remain the same size as time goes on? |
 |
|
kontraband
8 Posts |
Posted - 05 Apr 2007 : 09:39:42
|
It will grow with one more point to plot every minute for some of the graphs. So when the access violation occurs it has reached about 20 000 or so. Could this be the problem?
Or could it be some other issue with the OS?
Peace! |
 |
|
quinncurtis
1164 Posts |
Posted - 05 Apr 2007 : 10:09:03
|
No, 20,000 is not a magic number. The software can plot millions of points. For testing puposes why don't you get rid of the WGSaveASCIIDataSet call and speed up the update rate to once per second, or faster. Count the exact number of updates and see if the fault always occurs at the same update count.
If you are scheduling your updates using a timer, you must make absolutely sure that you disable the timer, and updates, while you are doing other things with the datasets, such as saving and reconnecting them.
|
 |
|
|
Topic  |
|
|
|