Slashdot Log In
Apple Quietly Fixes DTrace
Posted by
kdawson
on Wed Jun 11, 2008 08:05 AM
from the understating-it dept.
from the understating-it dept.
In January we discussed a blog entry revealing that Apple had "crippled" its DTrace port. As the author notes in a followup post, to say that DTrace had been "crippled" was at least overstated: "Unfortunately, most reactions seized on a headline paraphrasing a line of the post — albeit with the critical negation omitted." In an updated entry, the poster notes that Apple has made good (so we have too): "One issue was that timer based probes wouldn't fire if certain applications were actively executing (e.g. iTunes). This was evident both by counting periodic probe firings, and by the absence of certain applications when profiling. The good news is that Apple has (quietly) fixed the problem in Mac OS X 10.5.3."
Related Stories
[+]
Apple Crippled Its DTrace Port 476 comments
Linnen writes in to note that one of developers of Sun's open source system tracing tool, DTrace, has discovered that Apple crippled its port of the tool so that software like iTunes could not be traced. From Adam Leventhal's blog: "I let it run for a while, made iTunes do some work, and the result when I stopped the script? Nothing. The expensive DTrace invocation clearly caused iTunes to do a lot more work, but DTrace was giving me no output. Which started me thinking... did they? Surely not. They wouldn't disable DTrace for certain applications. But that's exactly what Apple's done with their DTrace implementation. The notion of true systemic tracing was a bit too egalitarian for their classist sensibilities..."
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Good news (Score:3, Interesting)
DTrace is used in all sorts of interesting ways. On the Belenix project, for e.g., we've sped up the LiveCD boot enormously, and this innovative use of DTrace is now part of the Distro Constructor Toolkit at opensolaris.org.
On my Dell D620, Belenix boots in about 3 and a half minutes (with KDE), while Ubuntu 7.10 boots up in about 8 minutes.
-- Sriram
http://www.belenix.org/
http://dynamicproxy.livejournal.com/
Re:Good news (Score:5, Funny)
Parent
Good going apple! (Score:5, Funny)
Keep up the good work!
Quietly, quietly (Score:5, Insightful)
Re:Quietly, quietly (Score:5, Insightful)
Parent
Re:Quietly, quietly (Score:4, Informative)
From a developer standpoint, this is a very bad thing apple did. Understanding what's going on and getting stuff to work is hard enough without zombified debugging tools that lie to you.
Parent
"Quietly" (Score:5, Funny)
Jeez, give a fruit a break.
Good news doesn't sell (Score:3, Insightful)
Re:Took them long enough (Score:4, Insightful)
Parent
Re:Took them long enough (Score:5, Informative)
But that's exactly what Apple's done with their DTrace implementation. The notion of true systemic tracing was a bit too egalitarian for their classist sensibilities so they added this glob of lard into dtrace_probe() -- the heart of DTrace:
Parent
Re:Took them long enough (Score:5, Informative)
Most likely they are trying to prevent tracing/debugging/reverse engineering of apps like iTunes and QuickTime that host ITMS DRM content.
Parent
Re:Took them long enough (Score:5, Insightful)
Parent
Re:Took them long enough (Score:5, Funny)
Parent
Re:Took them long enough (Score:5, Informative)
Parent
Re:Took them long enough (Score:5, Interesting)
Developer specific issues like this would certainly be fixed quickly under Linux, since it is a developer OS. On the other hand, usability issues that get fixed quickly under OS X, are often left to languor under Linux.
In both cases those features may never be fixed under Windows (or would be broken again after the next "Service Pack"
Parent
Re: (Score:3, Informative)
Their passive-aggressive relationship with multiple mouse buttons is a crying shame.
To be honest, to me this seems like a thing of the past. Apple-critics tend to use it as an argument against Macs but really, that was fixed when the Mighty Mouse came out. I would argue even before that, since I was using out-of-the-box (as in drivers already installed) a Microsoft 5-button mouse on my first Powerbook, and could configure all the buttons. If you're working on a Macbook or Macbook pro, I find the "double-finger click" (whatever you want to call it) equally if not more convenient than havin
Re: (Score:3, Informative)
Their passive-aggressive relationship with multiple mouse buttons is a crying shame.
I find their stance on mouse buttons to be ideal. As a usability expert, I can assure you misuse of secondary mouse buttons is one of the most common usability problems, even for more advanced users, although they often do not consciously note it. For novice users, a single mouse button is by far preferable. For trackpad users, both novice users and power users complete tasks faster using two-finger taps or chording... with only midrange users having issues. Standardizing one one button as the requirement
Re: (Score:3, Informative)
Argumentum ad verecundiam. I've been seeing people make claims like this for almost 25 years now, and I have yet to see a single credible study that supports it.
Single button mice are more "demo friendly". That's it.
* Applications are *not* as consistent as you claim. There are many actions even in Apple's apps that are only available through the contextual menu, or through magic chords.
* T
Re: (Score:3, Funny)
Anyone who has spent a day answering phones on a tech support line can confirm that mixing up mouse buttons is a common issue.
"right click on the icon"
"double click?"
"no, ma'am, click the right button on your mouse"
"how do I know which button is the right one?"
Re:Took them long enough (Score:5, Informative)
Parent
Re: (Score:3, Informative)
These sort of concurrency issues are bad enough when they're bug in your *own* code. When it's stuff in other apps producing what appears to be strange behaviour in your own (perfectly fine) code, that's a BIG problem.
This sort of issue wouldn't survive for a week on Linux.
If you read the original story, which this one is an update to, then you'll see that there are no bugs - only features.
Apple intentionally disabled DTrace on some software.
You can actually take a look at Apple's DTrace source.
Re: (Score:3, Insightful)
Seriously, unless you are developing Cocoa(or Carbon) apps, there is very little reason to use XCode. There are better free software programs out there for writing c++ code, not to mention you could always just call good ol' gcc on the command line....
Re:Mac's Suck (Score:4, Insightful)
$ make
Parent
Re:Mac's Suck (Score:5, Informative)
Q: I'm trying to link my binary statically, but it's failing to link because it can't find 'crt0.o.' Why?
A: Static linking of user binaries is not supported on Mac OS X. Tying user binaries to the internal implementation of Mac OS X libraries and interfaces would limit our ability to update and enhance Mac OS X. Instead, dynamic linking is supported (linking against crt1.o automatically instead of looking for crt0.o, for example).
We strongly recommend that you consider the limitations of statically linking very carefully, and consider your customer and their needs, plus the long-term support you will need to provide. Apple provides support and attempts to insure complete compatibility through the published APIs, but cannot insure that compatibility in a statically linked project. Any change to Mac OS X, in a system update, security update, or major revision, may break statically linked code.
If your project absolutely must link statically and need crt0.o, you can get the Csu module from Darwin and try building crt0.o statically. Please bear in mind that you must then clearly specify to your customers the compatibility risks involved in installing a product that relies on statically linked code.
Parent
Re:Mac's Suck (Score:5, Informative)
There are of course system calls (both BSD-style and Mach-style ones), but they are undocumented and can change from one Mac OS X version to another (even between minor system updates). The reason is that Apple wants to have and keep full freedom in changing the systemuser space interface at any time it wants whenever that's convenient for whatever reason (performance, security, getting rid of legacy cruft,
So if you'd statically link a program, it would be linked to a particular libc version which in turn would use the system calls as they work on the particular version of Mac OS X this libc version was compiled for. The end result would be that your program would only be guaranteed to function correctly on that particular OS revision.
libc's interface on the other hand is kept backwards compatible between OS revisions, so as long as you dynamically link against it, your program will work fine on pretty much any OS version out there (except if you use APIs which didn't exist yet in older versions).
This is more or less the opposite case as on e.g. Linux, where glibc breaks binary compatibility every other full moon (so you need to distribute different binaries for different glibc versions if you want to link dynamically to it), but the kernel's system call interface is pretty much guaranteed to remain backwards compatible for a very long time (so statically linked binaries are generally much more portable across distributions â" the downside is that you then should link everything statically because installed dynamic libraries may rely on features provided by a newer glibc than the one you statically linked, and in case of e.g. a KDE or GNOME app you'd end up with immense binaries).
Parent