Kbase P5827: Error 49 when using Memory Mapped Procedure libraries and overwite code with unix cp command
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  9/23/2010 |
|
Status: Verified
SYMPTOM(s):
_progres client session is dumping core with error 49 when running code that is contained in a memory mapped procedure library.
SYSTEM ERROR: Memory violation. (49)
Stack trace / Protrace file produced as a result of SYSTEM ERROR: Memory Violation (49) error.
PROGRESS stack trace as of ...
Command line arguments are
_progres -pf filename.pf
( 0) 0x004f7820 uttraceback + 0x20 [/opt/v91c/bin/_progres]
( 1) 0x004ec29c uttrace + 0x18c [/opt/v91c/bin/_progres]
( 2) 0x004ec0a8 utcore + 0xe8 [/opt/v91c/bin/_progres]
( 3) 0x000cb0e0 drexit + 0x1d8 [/opt/v91c/bin/_progres]
( 4) 0x000cc2c8 drSigFatal + 0x78 [/opt/v91c/bin/_progres]
( 5) 0xc0208098 _sigreturn [/usr/lib/libc.2]
( 6) 0x00299340 crLockSeg + 0x58 [/opt/v91c/bin/_progres]
( 7) 0x00299834 crSetBases + 0x47c [/opt/v91c/bin/_progres]
( 8) 0x00294474 crrun_entry + 0x2ec [/opt/v91c/bin/_progres]
( 9) 0x002cabd4 rninterpret + 0x5c [/opt/v91c/bin/_progres]
(10) 0x0034b0b0 umeDispatchEvent + 0xfd8 [/opt/v91c/bin/_progres]
(11) 0x001f4db8 wvRunDispatcher + 0x190 [/opt/v91c/bin/_progres]
(12) 0x0043cbe4 iodispatch + 0xbc [/opt/v91c/bin/_progres]
(13) 0x000e1d70 rnrq + 0x88 [/opt/v91c/bin/_progres]
(14) 0x000c4018 main + 0x1e8 [/opt/v91c/bin/_progres]
(15) 0xc0143180 _start + 0xc0 [/usr/lib/libc.2]
(16) 0x000bdbc0 $START$ + 0x1a0 [/opt/v91c/bin/_progres]
Database <dbname> not connected (1006)
Error 1006 shows database name as lowercase. Database name should be uppercase.
** Unable to run startup procedure <name>. (492)
Failure occurs when cp command is used to overwrite existing libraries.
FACT(s) (Environment):
prolib -list shows that procedures on source and target machines are identical.
UNIX sum command shows no difference between files on disk or memory
Failure does not occur if the procedures are removed from disk using the Operating System remove "rm" command and then updated ones are copied over into the directory.
Progress 9.1C
CHANGE:
Moves procedure library from 1 machine to another machine using Remote Copy "rcp" command or Copy "cp" command on top of existing procedure library.
CAUSE:
R-code in memory mapped procedure library is different than r-code on disk.
FIX:
The r-code files that you place in a library are called members. Progress opens a library the first time you run a member procedure from the library. The library stays open until the end of your Progress session or until you remove the library from the PROPATH.
After locating a procedure in a memory-mapped library, Progress loads the procedure by mapping the library in shared memory where one or more clients can access it. When one or more client processes access an r-code procedure in a memory-mapped library, they access the same segments in shared memory. Because Progress executes the segments from the mapped library in shared memory (not local memory), no reloading is necessary.
A library remains open until the end of your Progress session or until you remove the library from the PROPATH. If you remove a library from the PROPATH while a member procedure is still active (either running, or waiting for a subprocedure to return), Progress displays an error message and the library remains open until you end your Progress session. Otherwise, Progress closes a standard library and unmaps a memory-mapped library.
To modify a memory mapped procedure library do the following:
1. Modify procedure.
2. Recompile procedure.
3. Make modifications to existing Standard Procedure Library.
4. Regenerate memory mapped procedure library.
If copying library from one machine onto another machine, delete ore remove pre-existing memory mapped procedure library prior to copying over new one. This will ensure that library is not being used and removed from cache.