New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RPM using LIBCx-enabled DB4 (BDB) w/o DB_PRIVATE fails #32
Comments
One interesting observation. When RPM is compiled with DB_PRIVATE hacks removed (see http://trac.netlabs.org/ports/ticket/7#comment:8), it mmaps many additional DB files which don't normally exist. Their names look like |
I debugged it a bit. Removing DB_PRIVATE hacks from RPM causes |
I tried to remove DB_PRIVATE hacks from RPM and convert all MAP_SHARED to MAP_PRIVATE calls in LIBCx and this also fixes the problem. Strange. The logic of mmap in LIBCx in case of MAP_PRIVATE is the same as with MAP_SHARED, the only difference is the DosAllocMem call. This may be a hint... |
Well, except that for shared mappings we track writes to pages and flush these writes back to the underlying file. Apparently this part in LIBCx doesn't work right and causes BDB to freak out. |
I found out that just disabling the code resetting/restoring the PAG_WRITE bit used to track dirty pages solves the BDB failure. This really puzzles me as modifying PAG_WRITE should not make any harm to the data... |
The BDB implementation originally uses shared mmap regions but this doesn't currently work, even with #29 fixed. The original BDB ticket is this: http://trac.netlabs.org/ports/ticket/7. When DB_PRIVATE is removed from RPM (see the original ticket), RPM fails with this when doing e.g.
yum install lemon
Note that it happens even before YUM asks you to Install Yes/No.
The text was updated successfully, but these errors were encountered: