Process crash

  • Creator
    Topic
  • #51277
    Chris Williams
    Participant

    For the second time in the last two months we have had processes crash and refuse to start. The solution has been to rename the process, but we don’t know why that works.

    The problem is not resolved by shutting down all of Cloverleaf, or doing the usual clean-up like removing monitorShmemFile, vista.taf, etc. The process does an orderly shutdown, and the error log will say it received a Signal 6. The process log stated

    Quote:

    *** glibc detected *** free(): invalid pointer: 0x0829ba30 ***

    We’re running 5.6 on Red Hat and scratching our heads. Does anyone have a clue?

    Thanks.

Viewing 9 reply threads
  • Author
    Replies
    • #69487
      Troy Morton
      Participant

      Chris,

      It looks like this is a internal error to the engine C code.  I found this web-link that explains what this error means, but it doesn’t really explain what it means in the context of Cloverleaf.

      Hope this helps.  http://www.gidforums.com

    • #69488

      Chris, have you checked the recovery and error databases after the process crashes?

      hcidbdump -r -U foo

      hcidbdump -e -U bar

      -- Max Drown (Infor)

    • #69489
      Sundeep Kumar
      Participant

      I would make sure the recovery and error queues are empty. Also is it possible that some file got corrupted in the installation ? It is possible to delete bin and lib directories. If the code uses dyamic linking (I am not sure if the engine does that) it could just be a wrong version of the library (DLL) that it is looking at.

    • #69490
      Chris Williams
      Participant

      As part of the clean-up process we emptied and initialized the databases, but we still had the problem.

    • #69491
      Bob Moriarty
      Participant

      I experienced this problem today. In my case, it was caused by an inbound transaction having a single ampersand in a field that an Xlate was trying to copy. The Xlate also had the following in-line code operrating on the field in question:

      set xlateOutVals [string range $xlateInVals 1 [expr [string length $xlateInVals]]]

      5.6.2 on RedHat 4

    • #69492
      Chris Williams
      Participant

      Hi Bob,

      Nice to know that I’m not imagining the problem. Ampersands can be a pain when they get used where they shouldn’t be. I’ll go back and see if that was our problem.

      Just as an aside, since I seem to be in teaching mode today, there is an easier way to write your string range command:

      Code:

      set xlateOutVals [string range $xlateInVals 1 [expr [string length $xlateInVals]]]

      can also be written as

      Code:

      set xlateOutVals [list [string range [lindex $xlateInVals 0] 1 end]]

      Since the command’s pointers are offsets from the beginning (zero-based), using the string length command gives you 1 beyond the end of the string. Character positions for a string with a length of 10, are from 0 through 9. You can also use the keyword “end” in the form “end-1”, “end-2”, etc. Don’t forget that xlateInVals and xlateOutVals are Lists.

      Cheers.

    • #69493
      Charlie Bursell
      Participant

      Well said Chris  😀   I keep preaching this.  One day it will get through  😀

    • #69494
      Bob Moriarty
      Participant

      Thanks for the tcl tip. I’ll pass it along to the developer.

      And Charlie, whenever I’m at a loss for an answer to any question, I blurt out, “Remember, it’s a list”.   😀

      I replaced the inline tcl code with the new-improved version but still get a glibc error and core dump.

      Might this be considered a Cloverleaf bug?

    • #69495
      Bob Moriarty
      Participant

      I’ve dug a little further and discovered  that the crash actually occurs in an Xlate IF statement that is examining a field containing an ampersand. This makes sense and is referenced in the logfile line immediately preceding the glibc line.

      Quote:

      [xpm :xlt :WARN/0:Cerner_ORU_xlate:01/27/2010 13:46:33] IF data fetch produced multiple values.

      *** glibc detected *** free(): invalid pointer: 0x0829ba30 ***

      I didn’t understand what

      Quote:

      IF data fetch…

      meant and now feel really stupid.

      IF I only had a brain…    😕

    • #69496
      Bob Moriarty
      Participant

      Not to beat a dead horse (again)…

      I’ve suggested to the developer to add another layer of specificity to the IF’s Condition statement.

      Code:

      { COND { 0(0).OBR(0).#31(0).[0].[0]  ne @null} }

      not

      Code:

      { COND { 0(0).OBR(0).#31(0).[0]  ne @null} }

Viewing 9 reply threads
  • The forum ‘Cloverleaf’ is closed to new topics and replies.

Forum Statistics

Registered Users
5,042
Forums
28
Topics
9,200
Replies
34,021
Topic Tags
267