3:52:19:OliB: if "print" emits a warning by Perl to STDERR, it is
redirected to doLog() again and causes
3:52:51:OliB: a deadlog waiting on flock($fh, LOCK_EX);
4:17:45:jamie: OliB: hmmmm. what version of Slash?
4:19:13:jamie: you're right of course. strange we never triggered
that (that we know of).
4:19:23:jamie: under what conditions are you seeing print want to
emit an error to stderr?
4:19:39:OliB: I use "wide" characters internally and perl
sometimes emits a "Wide character in print at ..."
4:20:19:OliB: rather non-standard for a slash setup and obscure,
but there could be other Perl warnings that trigger this, too.
4:20:19:jamie: pudge: read the above... what do you think is the
right solution for this? turn off warnings for those 3 lines? a global
var that indicates this pid already has the lock and shouldn't try to
get it again?
4:21:18:OliB: isn't appending atomic? why the exclusive lock ?
4:21:33:jamie: no, it's not atomic
4:21:52:OliB: that's a pity.
4:22:29:OliB: I'm currently trying 'use open OUT => ":utf8";' to
see if it supresses my warning
4:22:35:jamie: pudge happens to be looking at this part of the
code today :)
4:23:25:OliB: when one task deadlocks this way, the whole slashd
blocks, as nobody can log anymore
4:24:12:OliB: until a signal is received and flock unblocks.
4:28:12:jamie: try putting a "local $^W = 0;" just before the flock,
see if that solves it for you
4:28:18:jamie: we'll try to get a better fix committed to cvs soon
4:31:11:OliB: my warning is output, regarless of -w.
4:31:46:OliB: so I'll be watching CVS ;-)
Log in to post a comment.