It's all about the answers!

Ask a question

DOORS DXL EXCEPTION_ACCESS_VIOLATION (general_library.dll)


Julian Herbel (111) | asked Feb 08, 6:06 a.m.
edited Feb 08, 6:07 a.m.

 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!


Register or to post your answer.