Welcome to Telelogic Product Support
  Home Downloads Knowledgebase Case Tracking Licensing Help Telelogic Passport
Telelogic DOORS (steve huntington)
Decrease font size
Increase font size
Topic Title: DXL Error for New Users
Topic Summary:
Created On: 17-Jul-2003 22:28
Status: Post and Reply
Linear : Threading : Single : Branch
Search Topic Search Topic
Topic Tools Topic Tools
Quick Reply Quick Reply
Subscribe to this topic Subscribe to this topic
E-mail this topic to someone. E-mail this topic
Bookmark this topic Bookmark this topic
View similar topics View similar topics
View topic in raw text format. Print this topic.
Answer This question was answered by Dennis Lockshine, on Monday, July 21, 2003 8:15 PM

Answer:
Cory-

As a last ditch effort, to solve this problem I think you'll need to get your hands a little dirty and modify some of the core DXL that comes with DOORS - just until you find the cause of the problem. To do this, open the directory <DOORSHOME>/lib/dxl/utils, make a copy of the file attrutil.inc and store it in a safe location. Then, open the original in Notepad or Wordpad, go to line 40 and append the italicized line between the existing lines as shown below.

AttrDef ad = find(module o, attrName)
if(null ad) return ""
AttrType at = ad.type


Save the file and try to re-produce the error. If the error is gone, you will probably not have the desired results in your trace column, but at least you'll be on the way to debugging the cause of the problem. Now you can develop some DXL skills to continue to modify the attrutil.inc file and provide feedback about what module/object is current, what the values of other variables are, etc. Try inserting lines such as:

display fullName(module o)
display identifier(o)
display attrName


in addition to the if(null...) statement above (use display instead of print because this is layout DXL).

Once you're done and have (hopefully) figured out which module or permission is causing the error, don't forget to replace the modified attrutil.inc file with the original, saved version. Also note that if you open the same view on a different client, the saved view will not be calling your modified version of attrutil.inc.

-Dennis
 17-Jul-2003 22:28
User is offline View Users Profile Print this message


Cornelia Watson

Posts: 14
Joined: 12-Feb-2003

I built an impact analysis using the wizard and saved it as a view. Everyone could see it. Then, I added a user to our database. Neither he nor any subsequent new users can see it. It generates a series of error dialog boxes, then the following "DXL output" appears:

-R-E- DXL: <utils/attrutil.inc:41> null attribute definition parameter was passed into argument position 1
-I- DXL: <Line:55> execution halted

I know absolutely zero about DXL, so maybe this is an easy fix. I have tried the following things:

- Giving the user access in a group and individually.
- Deleting the group and re-entering it.
- Changing all access levels to RMDCA.
- Deleting the source module and rebuilding it, along with all of the links.
- Copying the entire hierarchy into a new project and re-testing.
- Re-loading an old archived module that was taken before the problem occurred.

None of the above worked. In addition, I have found that, when I log in as this user, I can build an in-link analysis with no problem, but the out-link generates the error. Plus, when I'm logged in as this user and try to run an impact analysis (without the wizard), it brings up the target module and runs a filter on both the source and target. There are no saved filters in either module.

This has been going on for three days. I am beginning to suspect corruption. Please advise.

Thanks,
Cory Watson
        Report this to a Moderator Report this to a Moderator
         18-Jul-2003 17:08
        User is offline View Users Profile Print this message


        Cornelia Watson

        Posts: 14
        Joined: 12-Feb-2003

        Update:
        I've also tried several computers and I've tried renaming old usernames to brand new ones.
        Same error both times.
        Thanks,
        Cory
        Report this to a Moderator Report this to a Moderator
         18-Jul-2003 17:54
        User is offline View Users Profile Print this message


        Dennis Lockshine

        Posts: 113
        Joined: 7-Apr-2003

        Cory,

        It would be helpful if you posted the DXL from the view column that is causing these errors:

        1. Select the column in the view
        2. Right click and select "Properties"
        3. Click the "Browse.." button
        4. Select "Current"
        5. Copy the DXL which appears in the top of that window

        Without being able to work directly in your database, it is much more difficult to diagnose a problem like this. Can the new users open all of the source and target modules? Does the new user have full access to all of the attributes or are some of them listed as <Read-locked data>? What are the other errors that appear before the DXL error you listed above?

        Trying to help,
        Dennis
        Report this to a Moderator Report this to a Moderator
         18-Jul-2003 18:24
        User is offline View Users Profile Print this message


        Cornelia Watson

        Posts: 14
        Joined: 12-Feb-2003

        Dennis,
        Here is the column code. Thanks for telling me how to get it. All users have full access. The only other error (besides the one in my original post) is "DXL halted with run-time error" in a dialogue box. When you click OK, it keeps coming up as the module tries to process each line. The correct information appears in the column behind the dialogue box at first, but then it changes to "DXL Error" all the way down. No <Read-locked data> message appears.
        I appreciate your help!
        Cory

        Skip objsSeen
        int objCount
        int lines[1] = {0}
        bool objSeen(Object o) {
        int count
        Object compo=null
        for (count = 0; count < objCount; count++) {
        if (find(objsSeen,count,compo) && (compo == o)) return true
        }
        return false
        }
        void adjustLines(int depth, showAtDepth) {
        int count
        for (count = 0; count < 1; count++) {
        while (lines[depth-1] < lines[count]) {
        if (depth == showAtDepth) display ""
        lines[depth-1]++
        }
        }
        }
        void showOut(Object o, int depth) {
        Link l
        LinkRef lr
        string otherModName
        Module otherMod = null
        Module linkMod = null
        Object othero
        string disp,s
        string plain, plainDisp
        int plainTextLen
        int count
        bool doneOne = false
        string linkModName = "*"
        if (depth == 1) {
        objsSeen = create
        objCount = 0
        }
        put(objsSeen,objCount,o)
        objCount++
        for l in o->linkModName do {
        otherModName = fullName(target l)
        if (null otherModName) continue
        if (!module otherModName) continue
        if (isDeleted module otherModName) continue
        othero = target l
        if (null othero) otherMod=read(otherModName,false)
        othero = target l
        if (null othero) continue
        if (isDeleted othero) continue
        otherMod = module othero
        int oldLines = lines[depth-1]
        adjustLines(depth, 1)
        bool kick = (doneOne) && (lines[depth-1] == oldLines)
        if (kick) {
        lines[depth-1]++
        if (depth == 1) display ""
        }
        if ((!objSeen othero) && (depth < 1)) {
        showOut(othero, depth+1)
        }
        doneOne = true
        if (depth == 1) {
        if (getParentFolder(otherMod) == getParentFolder(current Module)) {
        s = name(otherMod)
        } else {
        s = fullName(otherMod)
        }
        displayRich s
        s = (identifier othero)
        displayRich s
        s = probeRichAttr_(othero,"Object Text", false)
        displayRich s
        if (canRead(l."Created By")) s = l."Created By"
        else s = ""
        s = "[" s "]"
        displayRich s
        if (canRead(l."Created On")) s = l."Created On"
        else s = ""
        s = "[" s "]"
        displayRich s
        }
        lines[depth-1] += 5
        }
        if (depth == 1) delete objsSeen
        }
        showOut(obj,1)
        Report this to a Moderator Report this to a Moderator
         18-Jul-2003 19:29
        User is offline View Users Profile Print this message


        Dennis Lockshine

        Posts: 113
        Joined: 7-Apr-2003

        Cory,

        I assume you're using DOORS 6 or later, since the command "probeRichAttr_" can not have a boolean variable as it's 3rd argument using DOORS 5.

        Examining the file <utils/attrutil.inc>, line 40-41 (where the error occurs) reads:
        AttrDef ad = find(module o, attrName)
        AttrType at = ad.type


        The error is caused when ad is null because the attribute attrName does not exist in the target module, therefore the call to set at to the attribute type fails with the error you reported. However, the only way to get into this function is if a previous test for the existance of the attribute passes. Odd.

        The reason that <utils/attrutil.inc> is called in the first place is because the layout DXL is calling the probeRichAttr_() function. Try to comment out the line:
        //s = probeRichAttr_(othero, "Object Text", false)
        by adding two slashes before the "s=" as shown above.

        If you got this error in a view, you will probably not be able to re-edit the layout DXL and immediately see results -- DOORS sometimes does not refresh it's display when it encounters any error in the DXL. To remedy, you will need to remove the column from the view and re-add it by inserting a new column, choosing the Layout DXL radio box, clicking on Browse..., selecting Current, and then pasting in the modified code. Make sure you click the "check" button and fix any errors before you click OK.

        As I indated before, any call to "probeRichAttr_()" or "probeAttr()" would be suspicious. Comment out any line calling either function and re-testing the code until you find the culprit.

        Good luck!

        -Dennis
        Report this to a Moderator Report this to a Moderator
         18-Jul-2003 22:13
        User is offline View Users Profile Print this message


        Cornelia Watson

        Posts: 14
        Joined: 12-Feb-2003

        Dennis,
        I am indeed using v6.0. I only found one occurence and commented it out, then pasted it into a new column as layout DXL. It checked out with no errors, but unfortunately generated the same results when I logged in with a new user ID.
        Thanks,
        c
        Report this to a Moderator Report this to a Moderator
         21-Jul-2003 14:46
        User is offline View Users Profile Print this message


        Dennis Lockshine

        Posts: 113
        Joined: 7-Apr-2003

        Answer Answer
        Cory-

        As a last ditch effort, to solve this problem I think you'll need to get your hands a little dirty and modify some of the core DXL that comes with DOORS - just until you find the cause of the problem. To do this, open the directory <DOORSHOME>/lib/dxl/utils, make a copy of the file attrutil.inc and store it in a safe location. Then, open the original in Notepad or Wordpad, go to line 40 and append the italicized line between the existing lines as shown below.

        AttrDef ad = find(module o, attrName)
        if(null ad) return ""
        AttrType at = ad.type


        Save the file and try to re-produce the error. If the error is gone, you will probably not have the desired results in your trace column, but at least you'll be on the way to debugging the cause of the problem. Now you can develop some DXL skills to continue to modify the attrutil.inc file and provide feedback about what module/object is current, what the values of other variables are, etc. Try inserting lines such as:

        display fullName(module o)
        display identifier(o)
        display attrName


        in addition to the if(null...) statement above (use display instead of print because this is layout DXL).

        Once you're done and have (hopefully) figured out which module or permission is causing the error, don't forget to replace the modified attrutil.inc file with the original, saved version. Also note that if you open the same view on a different client, the saved view will not be calling your modified version of attrutil.inc.

        -Dennis
        Report this to a Moderator Report this to a Moderator
         21-Jul-2003 20:20
        User is offline View Users Profile Print this message


        Cornelia Watson

        Posts: 14
        Joined: 12-Feb-2003

        Bingo!
        The analysis was pulling attributes from four modules, all of which had the same access (RM) for the group in question. However (!) inserting the line revealed the suspect module. It turned out that the Object Text attribute was set to RM for the original users *individually* in the group to which the new user was added. Once I fixed that and logged the user off and back on, the analysis worked great.
        Thanks!
        c
        Report this to a Moderator Report this to a Moderator
        Statistics
        20925 users are registered to the Telelogic DOORS forum.
        There are currently 1 users logged in.
        The most users ever online was 15 on 15-Jan-2009 at 16:36.
        There are currently 0 guests browsing this forum, which makes a total of 1 users using this forum.
        You have posted 0 messages to this forum. 0 overall.

        FuseTalk Standard Edition v3.2 - © 1999-2009 FuseTalk Inc. All rights reserved.