odbedit -R does not work if odb is corrupted

Issue #230 resolved
dd1 created an issue

“odbedit -R” is used to get rid of stuck shared memory segments when there are problems with ODB (corruption, etc). SYSV shared memory provided the “ipcrm” command for this, linux posix shared memory provides “rm /dev/shm/*odb*”. mac os posix shared memory provides no way to do this, so “odbedit -R” (calls ss_shm_delete()) is required.

It turns out that “odbedit -R” has a bug - it does not work without connecting to ODB first. So if odb is corrupted, odbedit cannot connect to it and cannot remove it. The user is stuck.

K.O.

Comments (3)

  1. dd1 reporter

    fix is on branch feature/improve_exptab. it turns out ss_shm_delete() needs information about the experiment settings - in the general case, the shared memory name is formed from the experiment name and the experiment path (from exptab). To permit “odbedit -R” to get this information consistently with db_connect_database(), I had to reshuffle quite a bit of exptab-related code. After some more testing I will merge this into develop.

    K.O.

  2. Log in to comment