Re: [ecasound] Ecasound build process stuck after tests

From: Alessandro Ghedini <al3xbio@email-addr-hidden>
Date: Sun Apr 03 2011 - 17:12:53 EEST

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-list
Received 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