Ok on amd64. Now audacity not crash when opening a WAV file. Thanks.
Mon, 3 Sep 2012 01:29:35 +0200 от Stefan Sperling <s...@openbsd.org>: > > > > >Audacity crashes when opening a WAV file. > To reproduce, try: audacity file.wav > > It ends up catching SIGABRT. Setting a breakpoint at abort() > reveals the abort() call comes from pthread_mutex_unlock(). > Audacity is trying to unlock an unlocked mutex. The faulty code > calls the mTasksMutex.Unlock() function twice. > > The corresponding code in Audacity trunk seems to have been fixed: >http://code.google.com/p/audacity/source/browse/audacity-src/trunk/src/ondemand/ODManager.cpp?r=r11963#269 > > The diff below fixes the port (which needs an update to the > current release but that's for another day). > > ok? > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/audio/audacity/Makefile,v > retrieving revision 1.34 > diff -u -p -r1.34 Makefile > --- Makefile 3 Jan 2012 07:03:54 -0000 1.34 > +++ Makefile 2 Sep 2012 23:06:28 -0000 > @@ -5,7 +5,7 @@ COMMENT= free audio editor > V= 1.3.9 > DISTNAME= audacity-minsrc-${V} > PKGNAME= audacity-${V} > -REVISION= 3 > +REVISION= 4 > CATEGORIES= audio > > EXTRACT_SUFX= .tar.bz2 > Index: patches/patch-src_ondemand_ODManager_cpp > =================================================================== > RCS file: patches/patch-src_ondemand_ODManager_cpp > diff -N patches/patch-src_ondemand_ODManager_cpp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_ondemand_ODManager_cpp 2 Sep 2012 23:05:36 -0000 > @@ -0,0 +1,13 @@ > +$OpenBSD$ > +fix abort() in pthread_mutex_unlock() > +--- src/ondemand/ODManager.cpp.orig Mon Sep 3 01:04:47 2012 > ++++ src/ondemand/ODManager.cpp Mon Sep 3 01:05:08 2012 > +@@ -283,7 +283,7 @@ void ODManager::Start() > + > + //the thread will add it back to the array if the job is not yet done at the end of the thread's run. > + //mTasks.erase(mTasks.begin()); > +- mTasksMutex.Unlock(); > ++ //mTasksMutex.Unlock(); > + > + //detach a new thread. > + thread = new ODTaskThread(mTasks[0]);//task); > >