Skip navigation
Nick Wiggins
Currently Being Moderated

AudioUnit/VST plug-in crashing in Audition CS6

Aug 20, 2013 1:25 AM

Tags: #plugin #audition #cs6 #vst #audiounits

Hello,

 

I am currently developing an audio effect plug-in on Mac, which supports both VST/AudioUnit formats. I am trying to get the plug-in to work correctly in Audition CS6, but I am witnessing some very strange behaviour which is causing crash scenarios.

 

The problem occurs when I make a call to boost library functions timed_wait() or sleep(). which are called from within a thread I create when the plug-in is first loaded into memory. As soon as one of these methods is called, a crash occurs inside the pthreads library function pthread_getspecific(), due to memory access at address 0x0.

 

This behaviour is not exhibited in any other host I've tested in. Can you think of any reason why this might be happening?

 

Thanks in advance,

 

Luke

 
Replies
  • Currently Being Moderated
    Aug 21, 2013 4:58 PM   in reply to Nick Wiggins

    Audition (and Premiere Pro) uses Boost, so you're probably seeing a conflict between host and plug-in each using separate versions of Boost.  We also update our Boost version between releases, so it would be problematic to try and match our Boost version.  Other hosts are probably not using Boost yet, so the problem doesn't appear there (yet).

     

    Here's some helpful feedback from one of the Audition engineers:

    In theory, the two-level namespace on Mac OS X should solve the problem. It cannot be fixed in the application, only in the library/plug-in.

     

    Here's an explanation:

    http://hacksoflife.blogspot.com/2012/12/static-libraries-and-plugins-g lobal-pain.html

    Zac

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 28, 2013 10:13 AM   in reply to Nick Wiggins

    Hi,

    you said that you called the api from a thread.

    I've discovered that all the Suite functions are not thread safe (Zac, how about putting that little diddie in the manual??? - I opened probably a dozen tickets and it all came down to the suites not being thread safe)

    As a consequence I've put a semaphore around every API call. ("semAdobeSuite")

    This has stopped this sort of null pointer crash.

    And yes, if you're using static libraries you can absolutely mix versions since your DLL/dylib has absolutely no knowledge of the other other version being used in the executable.

     
    |
    Mark as:
  • Currently Being Moderated
    Aug 28, 2013 2:43 PM   in reply to Nick Wiggins

    Hi Luke,

     

    Hmm, have you had a chance to try the two-level namespace suggestion?

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points