• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: How is an AU supposed to close its files when it closes
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How is an AU supposed to close its files when it closes


  • Subject: Re: How is an AU supposed to close its files when it closes
  • From: Brian Willoughby <email@hidden>
  • Date: Sat, 16 Aug 2008 12:14:08 -0700

Jeremy,

I'm sorry if you were offended by my response or found it unnecessary. But I believe that you need to review some of the documentation on Mach, processes, and dynamic code.

The host is the only executable that is actually being run by the system. All of the AudioUnits are dynamically loaded into the one host process. The AUs are not executable directly, and that term is quite misleading. In other words, the AU "executables" that you talk about becomes part of the host "executable" when loaded. Until the host task terminates, all of the dynamic code that has been loaded as AUs will remain in the code space of the host executable. The Mach/ Darwin system does not unload dynamic code. Whether the AU files remain open or are closed does not seem important when you consider what's really happening, and it's probably necessary for them to remain open because the VM pager cannot predict that it won't need access to them at some future point, so long as the host continues to run.

And, yes, the system closes all files, including components, when a process (executable) terminates. An AU cannot terminate, because it was never started independently - an AU becomes part of another executable. The only way for the system to be certain that a component will never be executed once dynamically loaded into another process is for that process to be terminated.

Brian Willoughby
Sound Consulting


On Aug 16, 2008, at 08:01, Jeremy Sagan wrote: On Aug 16, 2008, at 5:38 AM, Brian Willoughby wrote:
Perhaps I have misunderstood your use of the terminology, but an AudioUnit is not an executable.

You are incorrect. An AudioUnit is a component, which executes and therefore contains an executable. I did not post this question to argue semantics with you.



The only executable is the host itself. Each and every AU is running as part of the main host executable. Thus, the host is responsible for closing anything that it opens. An AU cannot close itself.

Again I am not looking for a basic teaching of how plug-ins work. A plug-in must execute to work.


How is it that you are determining whether a component is open or closed, and what do you mean by an executable being open or closed?

If you had read the original post below you could easily answer your own question, I am determining whether a component (file) is open or closed using Activity Monitor. A Component's executable is opened with the 'OpenComponent' call and I thought should be closed with 'CloseComponent'.


Note that when you terminate a task (i.e. when you quit the host) all files opened by that task/host will automatically be closed.

This is not a problem when the task terminates, this is a problem that last only for the duration of the host session.


I don't think you needed to respond to this post at all.

Virtual memory handles quite a bit for you.

Well this statement is the only one in your post that is relevant. Does VM close the component when it exits a cache or something?


On Aug 15, 2008, at 22:59, Jeremy Sagan wrote:
I have been doing some coding help on an audiounit plugin and I have noticed that it and virtually all Music Device AudioUnits leave their executable open after the component has been closed. The one notable exception appears to be the DLS MusicDevice. Which leads to my question. What is a Music Device (or other AU) plug-in supposed to do to ensure that it's executable file is closed in the host after the component is closed?


Here is an example of a path to a fictional plugin's file left open:

/Library/Audio/Plug-Ins/Components/pluginnamehere.component/ Contents/MacOS/pluginnamehere

Note that I have been checking the files left open using Activity Monitor's 'open files and ports' tab and I have tried this test with AULab, my host, Metro, and AudioUnitHosting. I am running OS X 10.5.3 (in case it is OS related).

As I side not it would be great if AUVal posted nasty warnings if files were left open.

Thanks,
Jeremy
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: How is an AU supposed to close its files when it closes
      • From: Jeremy Sagan <email@hidden>
References: 
 >How is an AU supposed to close its files when it closes (From: Jeremy Sagan <email@hidden>)
 >Re: How is an AU supposed to close its files when it closes (From: Brian Willoughby <email@hidden>)
 >Re: How is an AU supposed to close its files when it closes (From: Jeremy Sagan <email@hidden>)

  • Prev by Date: Re: How is an AU supposed to close its files when it closes
  • Next by Date: Re: How is an AU supposed to close its files when it closes
  • Previous by thread: Re: How is an AU supposed to close its files when it closes
  • Next by thread: Re: How is an AU supposed to close its files when it closes
  • Index(es):
    • Date
    • Thread