Contribute
Register

10.8.4 Update available. What does/doesn't work?

Status
Not open for further replies.
As I understood such problem exists on real mac, doesn't it? And can you explain how does this plist file work? Does it tell coreaudio not to write to log? Or does it change something in my system?
I just think that log is created to writing there, and if something want do write - let's write. Or not?

It is logged by design (thus even on real macs) since 10.8.4. The workaround was also posted here: http://apple.stackexchange.com/ques...d-automatic-stack-shots-because-audio-io-is-i (probably originates from there) and it's kind of debatable whether it could be considered as a "workaround", since apparently it has some drawbacks (as per Graham Perrin's comments).
 
It is logged by design (thus even on real macs) since 10.8.4. The workaround was also posted here: http://apple.stackexchange.com/ques...d-automatic-stack-shots-because-audio-io-is-i (probably originates from there)[.]

Same person :)

Anyway, here's another workaround (more hackish but works) that still keeps the automatic stackshot-switching behaviour but stops the "stack shot" message here:

0. Remove /Library/Preferences/Audio/com.apple.audio.ServerSettings.plist

1. Compile the following with "gcc -Wall -dynamiclib -undefined dynamic_lookup -o ~/coreaudiod_sysloghack.dylib coreaudiod_sysloghack.c":
Code:
#include <stdarg.h>
#include <strings.h>
#include <syslog.h>

/* Ref: http://stackoverflow.com/questions/1065759/is-it-possible-to-replace-the-mac-login-screen
		http://stackoverflow.com/questions/12609728/changing-function-reference-in-mach-o-binary */

void picky_syslog (int, const char *, ...);

typedef struct interpose_s
{
    void *new_func;
    void *orig_func;
} interpose_t;

static const interpose_t interposing_functions[] \
__attribute__ ((section("__DATA, __interpose"))) = \
{
	{ (void *) picky_syslog,  (void *) syslog }
};

void picky_syslog (int pri, const char *fmt, ...)
{
	va_list ap;

	if (pri == LOG_NOTICE && !strncmp(fmt, "%s automatic stack shots because audio IO is %s", strlen ("%s automatic stack shots because audio IO is %s")))
		return;

	va_start (ap, fmt);
	vsyslog (pri, fmt, ap);
	va_end (ap);
}

2. Create a place to keep the dylib in. I've settled on the non-standard "/usr/local/libexec":

Code:
sudo mkdir /usr/local/libexec
sudo chown root:wheel /usr/local/libexec

3. Move the compiled dylib into this folder:
Code:
sudo mv ~/coreaudiod_sysloghack.dylib /usr/local/libexec/
sudo chown root:wheel /usr/local/libexec/coreaudiod_sysloghack.dylib
sudo chmod 644 /usr/local/libexec/coreaudiod_sysloghack.dylib

4. Open "/System/Library/LaunchDaemons/com.apple.audio.coreaudiod.plist" and tell it to load the dylib by inserting:
Code:
	<key>EnvironmentVariables</key>
	<dict>
		<key>DYLD_INSERT_LIBRARIES</key>
		<string>/usr/local/libexec/coreaudiod_sysloghack.dylib</string>
	</dict>

after:
Code:
	<key>GroupName</key>
	<string>_coreaudiod</string>

5. Let coreaudio access the library from its sandbox by editing "/usr/share/sandbox/com.apple.audio.coreaudiod.sb" and inserting:
Code:
(literal "/usr/local/libexec/coreaudiod_sysloghack.dylib")

after
Code:
(regex #"^/private/var/folders/[^/]+/[^/]+/C/mds/mds\.lock$")
in the "(allow file-read*" section.

EDIT: The downside to this is if /usr/share/sandbox/com.apple.audio.coreaudiod.sb is changed by a future update, /usr/share/sandbox/com.apple.audio.coreaudiod.sb will have to modified again to get working sound (assuming com.apple.audio.coreaudiod.plist is unchanged and still tries to insert the dylib).
 
Does someone have a vanilla 10.8.4 AppleHDA.kext, please attach it here, thx.

Do you get Sound assertion "errors" in the console with the AppleHDA patched by RehabMan, if you do please paste here what the console says.
 
I need a bit of help guys. I use my 4330s primarily in clamshell mode, with an external LCD connected via hdmi connector. What's interesting with the old AppleIntelSNBGraphicsFB (8.0) patched driver I'm using is that after powering the machine, the login prompt appears on the external monitor and not on the laptop's screen. After logging in, I can safely close the lid with the external display temporarily turning blue and returning back to normal display. If I use the stock AppleIntelSNBGraphicsFB (8.1.0) driver, upon boot up, login screen appears on the laptop's screen and when I close the lid, after logging in, the external display just remains blank. I have attached the old 8.0 driver for reference. Can anyone patch the new drivers off 10.8.4 to behave like the old one? Thanks so much.
 

Attachments

  • AppleIntelSNBGraphicsFB.kext.zip
    110.7 KB · Views: 82
I need a bit of help guys. I use my 4330s primarily in clamshell mode, with an external LCD connected via hdmi connector. What's interesting with the old AppleIntelSNBGraphicsFB (8.0) patched driver I'm using is that after powering the machine, the login prompt appears on the external monitor and not on the laptop's screen. After logging in, I can safely close the lid with the external display temporarily turning blue and returning back to normal display. If I use the stock AppleIntelSNBGraphicsFB (8.1.0) driver, upon boot up, login screen appears on the laptop's screen and when I close the lid, after logging in, the external display just remains blank. I have attached the old 8.0 driver for reference. Can anyone patch the new drivers off 10.8.4 to behave like the old one? Thanks so much.

Did you tried this one? Download it, install it with Kext Wizard, rebuid the kext cache and reboot. And give us some feedback :D
 
I have tried installing the file you referred to but it does not work in clamshell mode. After logging in, closing the laptop screen will cause the external lcd to shut off. In a working clamshell mode, the external screen always displays a blue screen temporarily then returns back to the work screen. Thanks though.
 
I have tried installing the file you referred to but it does not work in clamshell mode. After logging in, closing the laptop screen will cause the external lcd to shut off. In a working clamshell mode, the external screen always displays a blue screen temporarily then returns back to the work screen. Thanks though.

Sounds to me like that is the correct behavior...

Are you sure your laptop is not entering sleep mode when you close the lid? Make sure you disable sleep before closing the lid.
 
Sounds to me like that is the correct behavior...

Are you sure your laptop is not entering sleep mode when you close the lid? Make sure you disable sleep before closing the lid.
Mine does not go to sleep when I close the lid if an external monitor is connected, instead the internal monitor becomes the main monitor... I think this is the more desired behaviour.

Off topic, do you have a vanilla 10.8.4 AppleHDA somewhere?
 
Mine does not go to sleep when I close the lid if an external monitor is connected, instead the internal monitor becomes the main monitor... I think this is the more desired behaviour.

I agree this is desirable behavior. And... it looks like Apple actually fixed something. Wow... Apple actually fixed an annoying bug! Because that is not the way it used to work. You used to have to disable sleep (I used an app called NoSleep to make it easy).

BTW, I just tried with my external monitor. Closing the lid switches to external display, no problem. Tried with both mirroring on before the lid close and without mirroring. I'm running stock 10.8.4 AppleIntelSNBGraphicsFB.kext.

Off topic, do you have a vanilla 10.8.4 AppleHDA somewhere?

You will find it in the update package you downloaded from support.apple.com. You can use Pacifist to extract.
 
I need a bit of help guys. I use my 4330s primarily in clamshell mode, with an external LCD connected via hdmi connector. What's interesting with the old AppleIntelSNBGraphicsFB (8.0) patched driver I'm using is that after powering the machine, the login prompt appears on the external monitor and not on the laptop's screen. After logging in, I can safely close the lid with the external display temporarily turning blue and returning back to normal display. If I use the stock AppleIntelSNBGraphicsFB (8.1.0) driver, upon boot up, login screen appears on the laptop's screen and when I close the lid, after logging in, the external display just remains blank. I have attached the old 8.0 driver for reference. Can anyone patch the new drivers off 10.8.4 to behave like the old one? Thanks so much.

FYI: Stock AppleIntelSNBGraphicsFB.kext from 10.8.4 is 8.1.2 (8.12.47 to be exact), not 8.1.0.

What happens if you use the real stock driver from 10.8.4?
 
Status
Not open for further replies.
Back
Top