[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#4184) Lockup when moding one particular entry

On Fri, 2005-12-16 at 16:32 +0000, ando@sys-net.it wrote:
> On Fri, 2005-12-16 at 16:01 +0000, davidke@whidbey.net wrote:
> > I did as you suggested commenting out the set_lg_dir line in the second 
> > DB_CONFIG file for the disconnected branch and I still experience the 
> > same lockup in the same location.  I even commented out set_lg_dir for 
> > both files and still the same issue.  I updated my webpage with the new 
> > DB_CONFIG file I am using for the second database.
> Right, I have reproduced it even without DB_CONFIG.  I'll investigate
> further.

I think I got it: during the third modification, it gets to call
bdb_entry_get() to collect the group entry; unfortunately, this relies
on saving some private data in op->o_private, but, note below:

334             if( op ) boi = (struct bdb_op_info *) op->o_private;
335             if( boi != NULL && op->o_bd->be_private == boi->boi_bdb-
>be_private ) {
(gdb) p boi
$2 = (struct bdb_op_info *) 0x40fff4f0
(gdb) p boi[0]
$3 = {boi_bdb = 0x903e60, boi_txn = 0x984e00, boi_err = 0, boi_locker =
2147483661, boi_acl_cache = 0, boi_locks = 0x0}
(gdb) p bdb
$4 = (struct bdb_info *) 0x904580
(gdb) p op->o_bd
$5 = (BackendDB *) 0x9043c0

the boi_bdb member of this private data __should__ be equal to op->o_bd,
but it was actually set by __another__ database.  This breaks things a
bit (I think the wrong database is asked to release a lock it doesn't
own; this is not an issue, the real issue is that the lock is not

Honestly, I don't know how to proceed.  Hope someone else steps in...


Ing. Pierangelo Masarati
Responsabile Open Solution

SysNet s.n.c.
Via Dossi, 8 - 27100 Pavia - ITALIA
Office:   +39.02.23998309          
Mobile:   +39.333.4963172
Email:    pierangelo.masarati@sys-net.it