[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;
(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...
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
------------------------------------------