On Thu, Dec 04, 2008 at 01:41:21PM +0100, Eric Bollengier wrote: > Hello, > > I think that i have a fix, please, could you try it ? > > cd trunk > patch -p0 < sd-hang.patch > make && make install >
Thanks! I'll try it now. -- Pasi > > Le Thursday 04 December 2008 13:38:12 Pasi Kärkkäinen, vous avez écrit : > > On Thu, Dec 04, 2008 at 01:33:46PM +0100, Eric Bollengier wrote: > > > > > Could you stop all daemons with a sigsegv to force a backtrace ? > > > > > killall -SEGV bacula-sd bacula-dir > > > > > > > > > > (you will find 2 kind of file, *traceback and *bactrace in working > > > > > directory) > > > > > > > > > > After, if you can put results to pastbin, it will give information > > > > > about your problem. > > > > > > > > Ok, problems again.. here are the tracebacks: > > > > > > > > http://pasik.reaktio.net/bacula/debug/bacula-sd-traceback.txt > > > > http://pasik.reaktio.net/bacula/debug/bacula-dir-traceback.txt > > > > > > > > Here's what I did to make bacula-sd hang: > > > > > > > > 1. Rebooted the bacula server and the tape library > > > > 2. Fresh after the reboot made sure mtx and bacula mtx-changer work OK. > > > > 3. Started bacula > > > > 4. Ran a job that copies jobs from disk pool to tape pool > > > > 5. Bacula starts a bunch of jobs, but nothing happens.. bacula-sd is > > > > stuck. > > > > > > > > Any ideas how to debug this further? > > > > > > Thanks for this traceback, it's very useful, i have found a problem in > > > the code. > > > > > > in bool DCR::can_i_write_volume() we have : > > > lock_read_volumes(); > > > vol = find_read_volume(VolumeName); > > > > > > And the first step of find_read_volume() is to call lock_read_volumes(). > > > And this lock is not recursive. > > > > > > Now, i will take a look. > > > > Thanks. Good to hear those tracebacks helped. > > > > If you want me to test patches, I'm happy to help. > > > > -- Pasi > > > Index: src/stored/vol_mgr.c > =================================================================== > --- src/stored/vol_mgr.c (révision 8100) > +++ src/stored/vol_mgr.c (copie de travail) > @@ -681,9 +681,7 @@ > { > VOLRES *vol; > > - lock_read_volumes(); > vol = find_read_volume(VolumeName); > - unlock_read_volumes(); > if (vol) { > Dmsg1(100, "Found in read list; cannot write vol=%s\n", VolumeName); > return false; ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Bacula-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/bacula-devel
