On Sun, Apr 02, 2011 at 03:11:59PM +0300, Kai Vehmanen wrote:
> Hi,
>
> On Sat, 2 Apr 2011, Alessandro Ghedini wrote:
>
> >>Ok, here's a snapshot with some changes:
> >>http://ecasound.seul.org/download/snapshots/ecasound-2.7.2+dev-20110401.tar.gz
> >
> >Unfortunately the problem is still there :/
>
> d'oh, then this is getting even more interesting. :P
>
> >Maybe a quick and dirty solution would be to simply not create the watchdog
> >thread when it is not needed (e.g. for the various --version, --help and
> >similar options). Not sure how much work would be needed (or if it will
> >actually resolve the issue) though.
>
> I'd like to first understand what's causing this. I mean, it's very
> likely this could happen with other use-cases as well, so just
> whitelisting a few trivial things like '--version', would just hide
> the bug.
Sounds reasonable.
> For a dirty solution, I'd replace pthread_join() with
> pthread_cancel(). Thread cancelling has been a can of worms (at
> least in the past, with legacy pthread implementations). But if
> basic signal blocking and delivery mechanisms are not working for
> reason, things can't get much worse. But hopefully this is simply be
> a bug in ecasound code.
Ok, let's just keep this as "last resort" :)
> >>PS Can you reproduce this only with stresstest.rb or perhaps
> >> just by running "ecasound --version"...?
> >
> >Just running "ecasound --version" (or "--help") works as well. What I do is
> >simply running the command several times until it gets stuck.
>
> ok, great. Could you then patch ecasound/ecasound.cpp with:
>
> - // #define ENABLE_ECASOUND_EXIT_PROCESS_TRACES 1
> + #define ENABLE_ECASOUND_EXIT_PROCESS_TRACES 1
>
> ... recompile and retest? You should now get traces on what is
> happening when terminating.
Now I get:
% ecasound/ecasound --version
ecasound v2.7.2
[...]
ecasound: out of mainloop...
ecasound: joining watchdog...
Signal 1 received in exit phase 1
versus:
% ecasound/ecasound --version
ecasound v2.7.2
[...]
ecasound: out of mainloop...
ecasound: joining watchdog...
(ecasound-watchdog) Received signal 1. Cleaning up and exiting...
(ecasound-watchdog) looping until main reaches join point...
(ecasound-watchdog) thread exiting...
ecasound: joined watchdog...
ecasound: main() exiting with code 1
when it works correctly.
Cheers
-- perl -E'$_=q;$/= @{[@_]};and s;\S+;<inidehG ordnasselA>;eg;say~~reverse' ------------------------------------------------------------------------------ Create and publish websites with WebMatrix Use the most popular FREE web apps or write code yourself; WebMatrix provides all the features you need to develop and publish your website. http://p.sf.net/sfu/ms-webmatrix-sf _______________________________________________ Ecasound-list mailing list Ecasound-list@email-addr-hidden https://lists.sourceforge.net/lists/listinfo/ecasound-listReceived on Sun Apr 3 20:15:02 2011
This archive was generated by hypermail 2.1.8 : Sun Apr 03 2011 - 20:15:02 EEST