[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: (ITS#4184) Lockup when moding one particular entry
On Fri, 2005-12-16 at 17:16 +0000, ando@sys-net.it wrote:
> 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;
> (gdb)
> 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
> released).
>
> Honestly, I don't know how to proceed. Hope someone else steps in...
I've just fixed it in a rather inelegant manner in HEAD. Please check
(the same test I just posted should do the trick).
p.
Ing. Pierangelo Masarati
Responsabile Open Solution
SysNet s.n.c.
Via Dossi, 8 - 27100 Pavia - ITALIA
http://www.sys-net.it
------------------------------------------
Office: +39.02.23998309
Mobile: +39.333.4963172
Email: pierangelo.masarati@sys-net.it
------------------------------------------