DOORS DXL EXCEPTION_ACCESS_VIOLATION (general_library.dll)
![]() Hi,
I have some trouble with my DOORS Classic DXL script running in batch mode and started by the task scheduler.
The script is running through roughly 10 modules and in there through each object. If the object has an outlink of a specific LinkSet I collect some attributes values from the outlink modules and use them in the current module to modify attributes.
In general the the script runs without any DXL error but at some point in time my DOORS Client crashes and shows me an error via CMD:
general_library.dll caused an EXCEPTION_ACCESS_VIOLATION in module general_library.dll at 000000008ED0E0B1
0x007ffd8ed0e0b1 general_library.dll, Str_Substr_Ex()+00000161 byte(s)
The crash does not occur always at the same point and I already checked for "deleted" objects or other misleading things in the modules.
As these 10 mentioned modules do have many objects as well as many Outlinks to more or less always the same ~15 modules I am not sure, if I maybe get into resource trouble.
I am also not sure If I am handling the "read(" and "edit(" commands correctly to open the modules.
Here is the most important part of the script:
pragma encoding, "UTF-8"
pragma runLim,0
string myLinkMod = "/Path/LinkMod"
void switchOffVisibility(Module m) {
showDeletedObjects(false)
showChangeBars(false)
showGraphicsDatatips(false)
showGraphicsLinks(false)
hideExplorer(m)
tableContents off
graphics off
filtering off
showPictures off
showTables off
sorting off
linksVisible off
refresh(m)
}
void Main(Module mSource) {
//My Values
Module mTarget = null
Object oTarget = null
Object oSource = null
Link outLink
for oSource in mSource do {
if (oSource."SomeAttribute" "" == "SomeValue") {
for outLink in oSource->myLinkMod do {
bTChasOutlinks = true
//Get linked Module & Object
oTarget = target outLink
mTarget = read(fullName(target outLink) "", false, true) //Display=false, StandardView=true
switchOffVisibility(mTarget)
//Getting Info from linked Modules...
}
//Writing into DOORS...
}
}
}
//Start
Skip ModuleListBRU = create
int i = 0
put(ModuleListBRU, i++, "/Path/Mod1")
put(ModuleListBRU, i++, "/Path/Mod2")
put(ModuleListBRU, i++, "/Path/Mod3")
put(ModuleListBRU, i++, "/Path/Mod4")
put(ModuleListBRU, i++, "/Path/Mod5")
//Loop through Skip List
string modFullName = ""
Module m
for modFullName in ModuleListBRU do {
noError
m = edit(modFullName, false, true, true) // //Display=false, Silent=true, StandardView=true
if (!null m) {
switchOffVisibility(m)
Main(m)
save m
close m
}
}
|
Be the first one to answer this question!
Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.