Kbase P114618: Getting error 49 when starting a database after deleting users from _user table in Progress 9.1E03 &
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  16/10/2008 |
|
Status: Verified
FACT(s) (Environment):
OpenEdge 10.0B04
Progress 9.1E03
SYMPTOM(s):
Error 49 trying to start database:
SYSTEM ERROR: Memory violation. (49)
Stack trace from _mprosrv reads:
cxGetCursor
cxNext
cxFind
cxCheckEntries
dbSetOpen
Other utilities, such as proutil -C truncate, also fail with error 49.
A self-service 4GL user has deleted the _User record corresponding to their own userid.
userids have been deleted via the Security utility in the Data Dictionary while the database is in multi-user mode.
Any Client-Server connections, who's _user record is deleted disconnects with enssbrocon: child exited with 2, err=9
CAUSE:
Bug# OE00127741
CAUSE:
This issue occurs when using Progress 9.1E03 and OpenEdge 10.0B04.
This problem is caused when there are deleted records in the _User table, as one might do in eliminating a user?s access to an application. The deletion removes the user?s data record as well as index entries for that record; this operation is performed correctly.
Any OpenEdge process that opens a database will check the primary index of the _User table. However, the code that checks the index is defective in 9.1E03 and 10.0B04 and will cause a crash even though there is no problem whatsoever with the index per se; a memory violation ensues.
FIX:
Even though the database cannot be accessed in any way with OpenEdge 10.0B04 or Progress 9.1E03, the database is not corrupted. All data remains valid. The defect is in the database connection code, not in the database itself.
This problem is specific to OpenEdge 10.0B04 and Progress 9.1E03; a fix for this problem is available on OpenEdge 10.0B05 and Progress 9.1E04 Service Packs. No further action is needed after installation of the relevant Service Pack, and the database can be restarted immediately.