• 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: kextunload problem
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: kextunload problem


  • Subject: Re: kextunload problem
  • From: "Mark Stow" <email@hidden>
  • Date: Tue, 27 Jun 2006 08:50:32 +0000

Herb, thanks. I have some more info -
The system log tells me there is one instance of my class which is why it can't unload. It doesn't make any difference if the firewire device is plugged in or not.


I tried overriding retain() and release(), and in both cases when kextunload fails or succeeds, release() seems to be called once more than retain().

I also noticed that if I delete the driver from system/library/extensions and reboot, so it's not loaded on boot, and then copy it back and kextload it, kextunload will succeed.

If someone is over-retaining (and it seems to need to happen on bootup) wouldn't I see a difference in the retain() release() counts when unload fails?


From: "Herb Petschauer" <email@hidden>
To: "Mark Stow" <email@hidden>
CC: email@hidden
Subject: Re: kextunload problem
Date: Mon, 26 Jun 2006 09:18:45 -0700

On 26/06/06, Mark Stow <email@hidden> wrote:

Hi - I'm having some difficulties with kextunload. I am working on a firewire device driver which derives from IOService. The problem seems to be that free() never gets called. However, if I log out, then log back in again, everything works fine - ie free() is called, and the driver unloads correctly. I have stripped the code down to a bare minimum of just the life cycle functions, which in turn just call into IOService. I see init(), attach() and start() being called, and then on unload stop() detach() but not free(). Any help/ideas would be appreciated!




Check your system.log, there's probably a message telling you why your kext
won't unload (e.g. Couldn't unload kext (name) because there are x instances
of <some class>). free() doesn't get called until the last release()
(retain/release must balance) so I suspect someone is over-retaining(). Is
your Firewire drive unplugged when you try and unload the kext? The
/dev/disk nodes are usually left created until you unplug the device. Just
a thought...


-H.

_________________________________________________________________
Windows LiveĀ™ Messenger has arrived. Click here to download it for free! http://imagine-msn.com/messenger/launch80/?locale=en-gb


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


  • Follow-Ups:
    • Re: kextunload problem
      • From: "Herb Petschauer" <email@hidden>
References: 
 >Re: kextunload problem (From: "Herb Petschauer" <email@hidden>)

  • Prev by Date: Re: kextunload problem
  • Next by Date: open ("/dev/tty.xxxx"...) for my driver crashes the system
  • Previous by thread: Re: kextunload problem
  • Next by thread: Re: kextunload problem
  • Index(es):
    • Date
    • Thread