Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

Apple Quietly Fixes DTrace

Posted by kdawson on Wed Jun 11, 2008 07:05 AM
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."
+ -
story

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.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • 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.
    • While it might have seemed to some that tinfoil hats were in order (and maybe some might think they still are), it seems to me that this was likely just a bug in Apple's port of DTrace. Does anyone know if they posted (or will post) any patches for DTrace upstream?
      • by Anonymous Coward on Wednesday June 11 2008, @07:37AM (#23745851)

        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:

        #if defined(__APPLE__)
        /*
        * If the thread on which this probe has fired belongs to a process marked P_LNOATTACH
        * then this enabling is not permitted to observe it. Move along, nothing to see here.
        */
        if (ISSET(current_proc()->p_lflag, P_LNOATTACH)) {
        continue;
        }
        #endif /* __APPLE__ */
      • by jonwil (467024) on Wednesday June 11 2008, @07:43AM (#23745927)
        Its clear from the DTrace source from Apple that this is intentional. The OS has a "this app cannot be debugged" flag and they deliberatly made the decision that "cannot be debugged" == "cannot be DTraced"
        Most likely they are trying to prevent tracing/debugging/reverse engineering of apps like iTunes and QuickTime that host ITMS DRM content.
        • by Anonymous Coward on Wednesday June 11 2008, @08:04AM (#23746169)
          Surely you could just recompile dtrace for mac os x without the check though?
          • by somersault (912633) on Wednesday June 11 2008, @08:26AM (#23746453) Homepage Journal
            Obviously DRM crackers are incapable of this level of ingenuity (if you live in cuckoo land that is..)
          • Not necessarily. If they did their jobs correctly then the "check" wouldn't be in the dtrace app itself. It would be at the operating system level... an app would designate itself not debuggable, then the kernel api calls that dtrace uses to enumerate the list of running apps it can investigate simply wouldn't return the non-debuggable apps.

            Although I've no idea if this is the case, or what they've done, I suspect they simply fixed the underlying calls that dtrace uses to report on non-debuggable apps, wh
      • by Lally Singh (3427) on Wednesday June 11 2008, @08:01AM (#23746133) Journal
        It was apple-specific. They had a "don't debug me" flag that a process could set at startup (to protect DRM). But there was a bug in the interaction of these processes that could cause dtraced processes to take *forever*.
    • by powerlord (28156) on Wednesday June 11 2008, @07:18AM (#23745667) Journal

      This sort of issue wouldn't survive for a week on Linux.


      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" :P )
      • On the other hand, usability issues that get fixed quickly under OS X, are often left to languor under Linux.

        That's an ongoing problem with open source software, even on OS X. Camino, the "usability" oriented Gecko browser on OS X, has years-old issues.

        On the gripping hand, Apple still hasn't cleaned up Finder, though I congratulate them for finally ditching Metal. The "Cocoa-ized" Leopard Finder has major regressions (for example, it no longer tracks different views of different folders).

        Safari on Windows
        • 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

          • 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.
            for desktops yes (and as you say you could use a third party multi button mouse before that) thier laptops still come with only one button below the touchpad though.
            • for desktops yes (and as you say you could use a third party multi button mouse before that) thier laptops still come with only one button below the touchpad though.

              I've come to prefer this setup in laptops. Most clicking done is left clicking, when I switch to a windows laptop I find myself inadvertently hitting the right click constantly. I prefer the precise control offered by a ctrl+click which is (for me) less prone to accidental clicking. I'm not saying your preference is bad, or that mine is super

          • 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.

            The mighty mouse is exactly the kind of passive-aggressive **** that I'm talking about. The Mighty Mouse does not allow chording, and to reliably get right clicking out of it I have to hold my hand in an uncomfortable position tat severly aggravates my RSI. I use a Microsoft wheel mouse, the two-button-plus-wheel cheap mouse, and it works
            • I've never used a one button mouse with mac. I've never used the bundled mighty mouse. I've never used the bundled mouse with OEM windows machines (hate them, very un ergonomic and give me carpal).

              In this sense (using a 3rd party multi-mouse button with my desktop purchase), nothing has changed from windows to osx.

              For my thoughts on the one button laptops, I prefer it. Some folks like one model of car, some like others. I wouldn't say it's because one car manufacturer has a hatred for features in the ot

        • 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)

            As a usability expert, I can assure you misuse of secondary mouse buttons is one of the most common usability problems,

            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
            • 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.


              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?"
            • 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.

              What are you talking about? Have you ever performed a usability study on a modern computer? There is always at least one person messing up and hitting the wrong button. I once thought I was going to get away without that problem when testing an interface for network security experts, but sure enough one of the top guys at AT&T (a really bright guy by the way) who was helping us test accidentally clicked the wrong button while trying to access a menu. This is an absurdly common issue. To claim it has n

      • On the other hand, usability issues that get fixed quickly under OS X

        One area where they haven't fixed serious usability issues is in Spaces. They updated the behavior in 10.5.3, but I wouldn't call that an improvement. Until they fix Spaces to work better, I'd consider it a case of shipping beta-quality software.

    • 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.

      • Apple intentionally disabled DTrace on some software.

        Yes, but did they intend to disable tracing of all applications running concurrently with a non-traceable application? Which is what they did.

  • Good news (Score:3, Interesting)

    by Anonymous Coward on Wednesday June 11 2008, @07:21AM (#23745679)
    This was blogged about some days ago, but I'm glad that the news is out.

    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/
    • The better question is: how bad is your D620 that Ubuntu takes 8 minutes to load? I've never seen longer than 5, and that was on a Celeron 633 w/ 96MB of RAM.
    • by Anonymous Coward on Wednesday June 11 2008, @07:39AM (#23745883)
      That's just sad. You shouldn't flash those numbers in public.
    • I'm sick of boot times measured in minutes.

      What is this, 1980?
      • Don't forget he's talking about LiveCD boot times, not boot times from hard disk...
        • They should still be able to beat 1980 floppy boot times using a CD-ROM.

          Yes, I know they're doing a lot more than in 1980.

          That's the problem. How much of what they're doing is necessary?
  • by YeeHaW_Jelte (451855) on Wednesday June 11 2008, @07:23AM (#23745703) Homepage
    Your evilness index has just dropped from 45.8 to 45.3

    Keep up the good work!
  • Quietly, quietly (Score:5, Insightful)

    by gonerill (139660) on Wednesday June 11 2008, @07:44AM (#23745929) Homepage
    What is the connotation of "quietly" supposed to be in stories like this? (Not just with Apple.) It seems like a weasel word. Is the intention to give the impression that Apple embarrassedly corrected themselves, or that they were forced to give into pressure from the developer community, but don't have the cojones to admit it, or what? Because, anyone honestly expecting something other than a "quiet" fix is deluded. Is a bug fix in DTrace supposed to get a slide at a Stevenote or something?
    • by stewbacca (1033764) on Wednesday June 11 2008, @08:07AM (#23746211)
      "Quietly" infers that the slashdot crowd should get credit, where no credit is due, as if our overwhelming numbers and sheer pressure forced Apple to change. Unfortunately, in the real world, we are such an insignificant demographic, that any changes are thus labelled as being done "quietly".
      • Re:Quietly, quietly (Score:4, Informative)

        by timeOday (582209) on Wednesday June 11 2008, @09:08AM (#23747095)
        Looking at the blog entry, no mention is made of an apple announcement at all; this blogger infers it is fixed based on what he would expect to see. What better definition of "quietly fixed" do you want?

        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.

    • Yes, because it is not a bug fix; it is a feature fix, if such a thing exists. The previous design was intentional. So, yes, if someone changes a design decision in a software I buy, I'd like to know why they did it - and in this case I'd like to know why it was there at the first time. I wasn't expecting a big announcement but a single line in OS X update page saying something along the lines of "revert DTrace to original behavior due to ___ " would do.
      • Ummmm.. no. Windows Service Packs are comparable to point (e.g. 10.1 as opposed to 10.0) releases of OS X.

        Microsoft patches are almost always* accompanied with installation instructions, affection products and possible caveats. At no point do they market bug fixes. Service Packs are made up of hundreds of patches - not one.

        *Slashdot has in the past been very keen to point out Microsoft patches ushered in without notifying users.

        Get a grip.
  • "Quietly" (Score:5, Funny)

    by Plantain (1207762) on Wednesday June 11 2008, @08:07AM (#23746213)
    What did you want, a friggin' parade?

    Jeez, give a fruit a break.
  • Apple designed their port of DTrace so that any program could "opt-out" of profiling if the developers are concerned about reverse-engineering. An unintended consequence of this was that it sometimes broke profiling of other apps while those apps were running. They've fixed that bug in their implementation of crippling, but that doesn't mean they've un-crippled it.

    It's a big step forward, because now at least developers can properly profile their own code. However, one of the purposes of DTrace is to profil
  • There are still several apps to which you can not attach DTrace, such as iTunes. The issue described in the first blog post hasn't been corrected, you can still set NOATTACH and your process is then untraceable. (Not that shitty movie, but you know what I mean.)

    The issue isn't (really) that timer counts are wrong, but instead, the far more interesting thing is that there are "special" processes that you can't touch and everyone is now suddenly OK with that because the timers count correctly.
  • by snowwrestler (896305) on Wednesday June 11 2008, @10:05AM (#23748007)
    The previous discussion [slashdot.org] generated hundreds of posts within a few hours, and topped out at 476. This one is at 60 comments after 3 hours and will be lucky to break 100. If you've ever wondered why Slashdot posts flamebait stories, there's your answer. "If it bleeds it leads."
    • how long was that Vista service pack? A year and a half? Yeah I thought so.
    • True, if not for the fact that it's not a bug but rather the intentional behaviour of Apple's version of DTrace. What other reasons do you have? I'm very happy with OSX for home use. Issues like this don't bother me because I'm not trying to reverse engineer the DRM in iTunes - in fact I don't even use iTunes, I use VLC.
    • Re: (Score:3, Insightful)

      Don't use xcode?

      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)

          by mwlewis (794711) on Wednesday June 11 2008, @10:04AM (#23747981)

          You must be joking. Have you ever written a project that had more than 5 C++ files? I work on projects that have dozens -- if not hundreds -- of different files, organized into multiple different directories, with many different library dependencies and different configuration options. Manually calling gcc is simply impossible, unless I want to waste half a day every time I need to compile something.
          WTF? It's called a makefile. "Manually invoking" gcc goes something like this:

          $ make

    • Re:Mac's Suck (Score:5, Informative)

      by Plantain (1207762) on Wednesday June 11 2008, @08:13AM (#23746297)
      Lifted from http://developer.apple.com/qa/qa2001/qa1118.html [apple.com] because I know no one will RTFA

      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.
    • Re:Mac's Suck (Score:5, Informative)

      by Halo1 (136547) <jonas.maebe@NoSpAm.elis.ugent.be> on Wednesday June 11 2008, @08:22AM (#23746409) Homepage

      Write a simple c or c++ hello_word program. Then try to compile and link it with Xcode using -static. It won't work b/c Apple has fucked-up ld.
      It has nothing to do with ld. The reason it doesn't work is that there is no static version of libc (aka libSystem) on Mac OS X. And the reason for that is that on Mac OS X, libc is the lowest level publicly supported system interface.

      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).
      • So.... I guess this won't be the Year of the Linux Desktop?
        • No they haven't. They just didn't provide the static libc. If you install the static libc, you can compile static binaries. What does that have to do with ld?