View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008030 | Compliance Test Tool (CTT) Unified Architecture | 2 - CTT Binary | public | 2022-06-04 18:12 | 2022-08-05 14:28 |
Reporter | Jochen Baier | Assigned To | |||
Priority | normal | Severity | crash | Reproducibility | sometimes |
Status | acknowledged | Resolution | open | ||
Product Version | 1.04.09.401 | ||||
Summary | 0008030: CTT is crashing during debug run of User Defined Tests | ||||
Description | CTT is crashing during debug run (“Start debug run) in 1 of 4 runs. Each run as a duration about an hour. The crash occurs during running User Defined Tests, so I cannot share the scripts easily. Should I upload the crash dump somewhere? Alternative is creating a new dump with debug symbols if someone send me a binary with symbols. | ||||
Additional Information | Crash Info: Callstack:
| ||||
Tags | No tags attached. | ||||
Files Affected | |||||
|
I want to use CTT in a CI environment for automatic testing. This bug makes this difficult to do. |
|
Please send the dump to compliance@opcfoundation.org and we'll see if we find something. But I suspect we will need a chance to reproduce the issue by receiving the user defined script and probably even the test target. |
|
During contact with Mr. Allmendinger who provided a exe with debug symbols I have now found the cause of the error: I accidentally passed a too short array in UaVariant.setStringMatrix() (See Script). Write assumes that the array in the UaVariant is long enough and probably accesses heap memory that comes after the first string. On the server side this was not noticed because the corresponding test sub writes string ranges and the server detects this with UaVariant.setStringMatrix() should therefore check if the array has the correct size. Script to reproduce. Tested with the demo server of the Unified Automation C++ SDK: <code> //Vereinfachter Test (Zeigt auch den Fehler) var monitored_item= MonitoredItem.fromNodeIds(UaNodeId.fromString(node_id), undefined, index_range)[0]; var dimensions = new UaInt32s(); var write_values = new UaStrings(); monitored_item.Value.Value.setStringMatrix( dimensions, write_values); var res=WriteHelper.Execute( { NodesToWrite: monitored_item, if (!res) return true; Test.Execute( { Procedure: test_write_matrix } ); You may have to run it a few times until it occurs. It occurs faster in the debugger. |
|
We should ensure it does not crash (try/catch) |
|
Will address this in a future release - not a high priority since script fixes can work around the problem |
Date Modified | Username | Field | Change |
---|---|---|---|
2022-06-04 18:12 | Jochen Baier | New Issue | |
2022-06-17 14:04 | Jochen Baier | Note Added: 0016850 | |
2022-06-21 10:34 | Alexander Allmendinger | Note Added: 0016939 | |
2022-07-22 09:16 | Jochen Baier | Note Added: 0017172 | |
2022-08-04 14:55 | Paul Hunkar | Note Added: 0017277 | |
2022-08-04 14:56 | Paul Hunkar | Assigned To | => Paul Hunkar |
2022-08-04 14:56 | Paul Hunkar | Status | new => acknowledged |
2022-08-04 14:56 | Paul Hunkar | Note Added: 0017278 | |
2022-08-05 14:28 | Paul Hunkar | Assigned To | Paul Hunkar => |