Leopard dual displays = disaster
Friday, 12. September 2008, 20:56:18
What is wrong with with Mac OS X, or, what is wrong with applications running on Mac OS X, when it comes to multiple displays? I started to suspect that this is a Window Manager bug and a serious one.
I started this cross-platform OpenGL renderering application and since I use Mac OS X Leopard primarily on my Mac Pro at home, I use Xcode. I have even learnt a little Objective-C (which isn't that difficult, anyway, it just has a stupid syntax that is distinct from other object oriented languages - oh well!). Xcode started to open source files on my secondary display, which I use primarily for browsing, iTunes and viewing API documentation, while I use primary monitor to write code and debug.
This is not a tennis game, it's debugger!
I start debugging on my primary monitor, but stepping in or breaking at breakpoint opens source code on secondary monitor. I have to either move window from secondary monitor to primary one or continue debugging (I usually prefer latter choice, though it becomes annoying because this is a recurring problem). So it debugging becomes like a tennis match where my eyes had to follow windows opening in different displays.
Xcode is not alone
It isn't Xcode specific problem... I tried unplugging my secondary display and power up again. Guess what; System Preferences opened at the right most edge of my (only) primary display! What's wrong with Leopard? I tried Xcode, and same thing happened; it opens my windows at the right most edge of the display!
Virtualizing Mac OS X
There is no legal and easy way to run Mac OS X under a virtual machine (I already have a genuine copy of Leopard, should I try hacked versions? I have even bought it roughly 80NOK cheaper at the day it's released - October, 26, 2007). If I had chance, I would definitely go for that. Run Mac OS X in a Virtual machine, which has exactly one display and has nowhere else to open new windows. Did it crash? No problem! Just restart VM.
Per-window/application settings in Window Manager?
For some peculiar reason, Opera and iTunes work perfectly fine. When they display message boxes, they pop up in primary display. But I always run Opera and iTunes in secondary display. This, for some peculiar reason, doesn't apply to Xcode. Everything works fine with most of other apps as well - they open their windows in the display they run within. This suggests, IMHO, that per-window or per-application settings are either messed up, or, they configured utterly wrong since the very beginning.
I'm not alone
Simple Google search returned hundreds of results; there are too many people suffering from the same problem... Not only in Xcode (so they may not be developer), but in different apps.
Shiny, but messy
Mac OS X Leopard is cool, sexy, attractive, vibrant, pretty, easy... you name it. But it also is the worst operating system Apple has ever made. One of my colleagues, sitting right behind my desk, has already downgraded to Tiger, which is much more stable. I sometimes consider doing so...
More trouble with OpenGL, NVIDIA 8800GT or with driver
My system frequently hangs and I had to cut the power off frequently. It's not my fault and I am not alone. Quick Google'ing returned hundreds of results, again, and Apple Support people told some customers that "engineers are working on it". That's reasonable, because I know how this process works; it's tedious and hard.
SomeTime ismailp kernel[0]: NVChannel(GL): Graphics channel exception! status = 0xffff info32 = 0xd = GR: SW Notify Error SomeTime ismailp kernel[0]: 0000000c SomeTime ismailp kernel[0]: 00200000 00005039 00000474 00000000 SomeTime ismailp kernel[0]: 00000484 00000100 00000000 00000003 SomeTime ismailp kernel[0]: 00000000 00000000 00000002 SomeTime ismailp kernel[0]: 0000000c SomeTime ismailp kernel[0]: 00200000 00005039 00000474 00000000 SomeTime ismailp kernel[0]: 00000484 00000100 00000000 00000003 SomeTime ismailp kernel[0]: 00000000 00000000 00000002 SomeTime ismailp kernel[0]: NVChannel(GL): Graphics channel timeout! SomeTime: --- last message repeated 1 time --- SomeTime ismailp kernel[0]: NVChannel(GL): Graphics channel exception! status = 0xffff info32 = 0xd = GR: SW Notify Error SomeTime ismailp kernel[0]: 0000000c SomeTime ismailp kernel[0]: 00200000 00008297 0000047c 00000000 SomeTime ismailp kernel[0]: 00000486 00001348 00004303 00000003 SomeTime ismailp kernel[0]: 00000000 00000000 01fffc01 SomeTime ismailp kernel[0]: 0000000c SomeTime ismailp kernel[0]: 00200000 00008297 0000047c 00000000 SomeTime ismailp kernel[0]: 00000486 00001348 00004303 00000003 SomeTime ismailp kernel[0]: 00000000 00000000 00000000 SomeTime ismailp kernel[0]: NVChannel(GL): Graphics channel timeout! SomeTime: --- last message repeated 2 times --- SomeTime ismailp kernel[0]: NVChannel(GL): Graphics channel timeout! SomeTime: --- last message repeated 1 time --- SomeTime ismailp kernel[0]: NVChannel(GL): Graphics channel exception! status = 0xffff info32 = 0xd = GR: SW Notify Error SomeTime ismailp kernel[0]: 0000000c SomeTime ismailp kernel[0]: 00200000 00008297 0000047c 00000000 SomeTime ismailp kernel[0]: 00000486 00001b0c 1000f010 00000003 SomeTime ismailp kernel[0]: 00000000 00000000 00000000 SomeTime ismailp kernel[0]: 0000000c SomeTime ismailp kernel[0]: 00200000 00008297 0000047c 00000000 SomeTime ismailp kernel[0]: 00000486 00001b0c 1000f010 00000003 SomeTime ismailp kernel[0]: 00000000 00000000 00000000 SomeTime ismailp kernel[0]: NVChannel(GL): Graphics channel timeout! SomeTime: --- last message repeated 1 time --- SomeTime ismailp kernel[0]: NVChannel(GL): Graphics channel timeout!
and similar errors... Solution: press power button longer than 5 seconds and power off.
Still blaming Windows?
My uptime record was approximately 210 days (or may be more - due to a power problem, it went down). I have also posted a screenshot in my photo album - that is the Dell PC running Windows xP SP2 at office. It doesn't spend a second wasting CPU cycles; it always performs some useful task. My Mac (which is a "personal" computer, sitting at home, hardly witnessing strange software development until August 2008) achieved 24 days uptime maximum so far, but it was not doing anything for 22 days except rotating aircraft pictures (which is my screen saver), because I was in honeymoon in Maldives with my lovely wife (I left it turned on "just in case"). As soon as I touched it, it broke down due to an error like I mentioned above. My bet is; Microsoft Windows is much more stable than Mac OS X. In fact, FreeBSD is rock solid, but I can't run it all the time because it's not "friendly" for daily use.
Enjoying bashing Apple?
No bashing! These are statistically valid results for me. I have proof. I have logs of both systems if anybody wants to check out. It's crystal clear that Apple is incapable of running their own operating system on their own hardware without any trouble, period. I'm not a Mac hacker! I didn't fiddle with strange things in the system. As a customer, who paid almost twice as much of a PC to this Mac Pro, I have the right to question these malfunctions. But Apple is arrogant, right? Apple has fetishists. They don't care, anyway... Well, this is my last Apple product! My wife wants an iPhone but I might convince her to buy Samsung Omnio (SGH-i900), which is technically superior than iPhone, but may not be as fancy as iPhone.
Back to multiple displays
I am running my genuine Microsoft Windows XP Service Pack 2 (the geniune product is Windows XP SP1) with Boot Camp. NVIDIA drivers under Windows are... perfect. They work amazingly better than Mac OS X, which, in theory, supposed to support OpenGL everywhere - Mac is all about OpenGL (isn't it?). I never saw Microsoft Windows XP opening windows on wrong displays, Visual Studio never switches second monitor while debugging, never saw only 1% of control panel window on primary display... I didn't see Windows freezing and crashing because some peculiar Direct 3D call timede out or halted, either! Nevertheless, as a matter of fact, Microsoft Visual Studio is "the" best Integrated Development Environment ever made by man; easy to use, extensible, uses MDI model, fast, supports multiple languages, got massive plugin support, and supports platforms, can fall back to debugger even if you are running a full screen Direct 3D application (unlike Xcode, which can't do anything if something goes wrong with your full screen OpenGL application)... countless beautiful features. I, for example, couldn't find a way to expand my desktop to second display under Mac OS X (e.g. each displays has 1280x1024 resultion, but I want one single 2560x1024 display). NVIDIA drivers on Windows XP can do this. Is this Apple's fault or NVIDIA's? I don't care! I can't do it under Mac OS X and that's what matters! I am totally convinced now; this is my last Apple product. I didn't like the way they deal with problems. Because they don't deal with them, they simply ignore your expectations, because what they want is more important than what you want, anyway.
Menu bar design sucks
Even if you have multiple displays, menubar can exist only on one display (not necessarily primary one, AFAIK - because you can drag it in System Prefereces > Displays). So, if you have 2 wide screen displays, running an arbitrary application on secondary display and need to do something with menus, you have to move your mouse to primary display to reach menus - no, you can't use keyboard shortcuts for such menu tasks (unline Windows, where you can access menu by a simple press to "Alt" key...) - lazy Mac users are not experienced with ease of using keyboard, anyway (shortcut example: in Xcode, if you want help, you have to press Shift-Command-Option-Question mark [you press shift to get question mark; original shortcut is Option-Command-? - but US English keyboard doesn't have a single question mark key...]. Mouse cursor starts its journey from second monitor, travels nearly 2 monitors wide distance and locates menu... Why doesn't Apple display application's menu on the display it's running at? Why people don't complain about such a stupid behavior? What's "good" with this? Is there a better way? If so, where is it documented?
Does Interface Builder-Cocoa couple suck or is it because Apple forcing something?
1 thousand dollar question; how can you write a Cocoa application without a NIB file (and preferably in portable way - I mean a portable application which is capable of creating Cocoa windows under Mac OS X [not Carbon] without NIB files)? Google gives you mind boggling results but it boils down to the fact that there are only "hacks" to do it. There is no easy way of doing it (if there is, there is no sample code available - I mean with full windows and menus). Dear Apple dudes, we want to use C and C++. Your (NeXT's?) Objective-C is too ugly, utterly different than its cousins (!) [[[C++] C#] and Java] and not portable (does it have an International Standard, by the way?)! Get this; portability is important in software development. Either use a mainstream language or get stuck in your tiny world. If I write an application, I want to run it every possible platform. Imagine everybody writes applications for Windows... Imagine, if you will, Adobe, Autodesk and even open source people write only for Windows or Lin(s)ux!
Wha...
Whilst I was writing this blog, screen "faded" (not just got pitch black immediately, but dimmed) and then it stopped for 2 seconds and came back... What's going on? Logs don't say anything...
Microsoft customer care vs. Apple customer ("we don't") care
I have had contact with Microsoft's various product support divisions so far. They are too quick (as in less than 12 hours). They at least give you insight of the problem (after explaining that you are not a "Next-clicking-only user"). Apple Support... Does it even exist?










KeMiSa # 15. September 2008, 12:23
ismailp # 15. September 2008, 12:40