Re: HALPlugIn::Initialize appears to be freezing
Re: HALPlugIn::Initialize appears to be freezing
- Subject: Re: HALPlugIn::Initialize appears to be freezing
- From: Jeff Moore <email@hidden>
- Date: Thu, 12 Jul 2007 12:43:50 -0700
It looks like somebody's user-land audio driver is attempting to open
a component. This isn't something that the HAL does, so it pretty much
means that it's a third party driver. You'd need to find out what
driver it is from the user.
On Jul 12, 2007, at 5:14 AM, Christopher Ashworth wrote:
Hi,
I am receiving a number of reports from users that my plugin-based
application is freezing on launch when some FireWire devices are
attached.
When extra logging is turned on for these users, their log shows the
freeze is occurring when loading one of the plugins during a call to
principalClass:
Class pluginClass = [(NSBundle *)plugin principalClass];
The app does not crash, but never gets past this call. The devices
can be successfully re-connected after launch, and used without
incident. The freeze only manifests if they are connected during
launch.
I purchased two of the FireWire devices causing this problem (an
Edirol FA-66 audio device and a Canopus ADVC 110 video I/O device)
but I cannot get this freeze to happen on any of my development
machines (PowerBook G4, MacBook Pro, Intel Mac Mini).
I found a savvy user who was able to run Thread Viewer and send me
copies of the stacks. On his MacBook Pro with an Edirol FA-101
Thread Viewer reports that the main thread is stuck at:
mach_wait_until
usleep
0x162183c8
0x1620bbed
0x1620fc03
CallComponentFunctionCommon
0x1620fb4d
CallComponentDispatch
CallComponentOpen
OpenAComponent
OpenComponent
0x15fbc882
0x15fd0ab9
HALPlugIn::Initialize()
HALPlugInManagement::CreateHALPlugIn(CACFPlugIn const*)
HALPlugInManagement::Initialize()
HALSystem::InitializeDevices()
HALSystem::CheckOutInstance()
AudioHardwareAddPropertyListener
0x15f74b36
_objc_notify_images
ImageLoaderMachO::doNotification(dyld_image_mode, unsigned,
dyld_image_info const*)
dyld::notifyAdding(std::vector<ImageLoader*,
std::allocator<ImageLoader*> >&)
ImageLoader::link(ImageLoader::LinkContext const&,
ImageLoader::BindingLaziness, ImageLoader::InitializerRunning,
unsigned)
dyld::link(ImageLoader*, ImageLoader::BindingLaziness,
ImageLoader::InitializerRunning)
NSLinkModule
NSLinkModule
objc_loadModule
_NSBundleLoadCode
-[NSBundle load]
-[NSBundle principalClass]
-[ToolboxController(Private)
validatePlugin:validPluginArray:needNewerQLabArray:needNewerPluginArray
:]
-[ToolboxController(Private) discoverPlugins]
-[ToolboxController awakeFromNib]
-[NSSet makeObjectsPerformSelector:]
-[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:]
loadNib
+[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:]
+[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:]
+[NSBundle(NSNibLoading) loadNibNamed:owner:]
NSApplicationMain
_start
start
The other threads at that time slice look like this:
-------------------
semaphore_wait_signal_trap
RecursiveReaderWriterLock::lockForSingleWritingThread()
NSCreateObjectFileImageFromFile
_CFBundleDYLDLoadBundle
CFBundleLoadExecutable
CFBundleGetFunctionPointerForName
_CFPFactoryCreateInstance
IOCreatePlugInInterfaceForService
0x162159f7
0x16215cf7
0x16215d58
0x16216948
0x162180c2
0x162182d9
0x162184b0
_pthread_body
-------------------
semaphore_wait_signal_trap
MPWaitOnQueue
TNodeSyncTask::SyncTaskProc(void*)
PrivateMPEntryPoint
_pthread_body
-------------------
kevent
PrivateMPEntryPoint
_pthread_body
-------------------
mach_msg_trap
0x2753ca
_pthread_body
-------------------
mach_msg_trap
__ape_agent
_pthread_body
-------------------
He repeated the freeze several times and the stack typically shown
for the main thread is the one given above (modulo slightly
different hex values), although once it did show:
mach_wait_until
usleep
0x162103c8
0x16203bed
0x16207c03
0x90cd0a53
0x16207b4d
0x90cd0738
0x90cd0714
0x90ccfc1a
0x90cd528c
0x15fb0882
0x15fc4ab9
0x9145429f
0x91453997
0x91452878
0x914526d5
0x91451459
0x91466d08
0x15f58b36
_objc_notify_images
ImageLoaderMachO::doNotification(dyld_image_mode, unsigned,
dyld_image_info const*)
dyld::notifyAdding(std::vector<ImageLoader*,
std::allocator<ImageLoader*> >&)
ImageLoader::link(ImageLoader::LinkContext const&,
ImageLoader::BindingLaziness,
ImageLoader::InitializerRunningꓘᏊunsigned)
dyld::link(ImageLoader*, ImageLoader::BindingLaziness,
ImageLoader::InitializerRunning)
NSLinkModule
NSLinkModule
objc_loadModule
_NSBundleLoadCode
-[NSBundle load]
-[NSBundle principalClass]
-[ToolboxController(Private)
validatePlugin:validPluginArray:needNewerQLabArray:needNewerPluginArray
:]
-[ToolboxController(Private) discoverPlugins]
-[ToolboxController awakeFromNib]
-[NSSet makeObjectsPerformSelector:]
-[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:]
loadNib
+[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:]
+[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:]
+[NSBundle(NSNibLoading) loadNibNamed:owner:]
NSApplicationMain
_start
start
Any thoughts on what might be going on? Should I file a bug on it,
or am I building the plugins incorrectly and causing the link to
fail for some specific (as yet unknown) circumstances?
TIA,
Christopher
_______________________________________________
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
--
Jeff Moore
Core Audio
Apple
_______________________________________________
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