Silver's Weblog - All Articles
Oh dear oh dear.
The world is at an end, I have a weblog. Things can only go downhill from here...
Permalink | Author: Silver | Tags: Weblog | Posted: 03:38PM on Thursday, 02 June, 2005 | Updated: 03:54PM on Thursday, 02 June, 2005 | Comments: 0
And so it begins.
My time is slowly wasting away. Silly paid work. Still, money is money. Kinda.
New PC is still in bits, unfortunately, due to a rather important lack of PSU. There'll be some harsh words about this tomorrow!
Permalink | Author: Silver | Tags: PC | Posted: 05:27PM on Thursday, 02 June, 2005 | Updated: 07:00PM on Thursday, 02 June, 2005 | Comments: 0
Sane Posting
Aaaah, a web-based posting system always feels so much better. Next stop, web-based editing...
Edit Ok, so the preview form is screwing up the <textarea>. *sigh*
Permalink | Author: Silver | Tags: Weblog | Posted: 06:59PM on Thursday, 02 June, 2005 | Updated: 07:48PM on Thursday, 02 June, 2005 | Comments: 0
Macromedia
Boy do they have a lot to answer for. The company I work for uses it, and believe me, it makes a right mess of the code. Not to say other HTML editors don't, but when I'm trying hand edit some code (so it, you know, works in non-IE browsers) and I see this:
<td> <div align="left"><strong></strong></div> <div align="right"> ...
I really start to get annoyed.
Permalink | Author: Silver | Tags: Work, HTML | Posted: 05:12PM on Friday, 03 June, 2005 | Comments: 0
Users Who Don't Want Help
I get the feeling sometimes users don't really want any help, they just want to annoy those trying to help. You suggest they try X or Y, and they say that they copied some example from place Z. So you ask for a URL, and they give you one... you point out the major bit they didn't copy correctly, and they claim they are "just following the examples" and ignore anything you suggest again. Times like these I wonder why I ever tried to help in the first place...
Permalink | Author: Silver | Tags: Mozilla, Users | Posted: 08:03PM on Friday, 03 June, 2005 | Comments: 0
RDF Debugging
Sucks.
Permalink | Author: Silver | Tags: Mozilla, RDF | Posted: 10:14PM on Friday, 03 June, 2005 | Comments: 0
Commenting
For those wondering, yes, commenting will be added to this weblog at some point. Not sure when, depends how much work I want to do... but it shouldn't be too hard.
Permalink | Author: Silver | Tags: Weblog | Posted: 03:49AM on Saturday, 04 June, 2005 | Comments: 0
Linking libXUL
My build box actually ran out of virtual memory trying to link libxul yesterday. Scary. Luckly my new box (still in bits) will have somewhat more than 256MB RAM so it shouldn't even need VM to link!
Permalink | Author: Silver | Tags: Mozilla | Posted: 02:24PM on Saturday, 04 June, 2005 | Comments: 0
RSS Feed
Ah, that was a fun exercise indeed. I've now got an RSS feed of the last 10 posts, which your browser should pick up automatically.
Permalink | Author: Silver | Tags: Weblog | Posted: 03:41PM on Saturday, 04 June, 2005 | Comments: 0
Testing...
This is a test weblog post which I will be using for testing some new features on over the next few days. Please don't be alarmed if new features appear here first!
Permalink | Author: Silver | Tags: Weblog | Posted: 05:55PM on Saturday, 04 June, 2005 | Comments: 5
ChatZilla's Munger
It's in need of some slight attention right now. The main problem is that it always prefers munger entries that were enumerated first, which equates to added first in Spidermonkey (Mozilla's JS Engine).
I filed the bug on it a while ago now, but it recently came to my attention that Wikipedia actually had a script that broke stuff because of it. I've corrected the script with version 1.2 so it doesn't completely break normal links, but the real bug still stands.
Permalink | Author: Silver | Tags: Mozilla, ChatZilla, Bugs | Posted: 04:32PM on Sunday, 05 June, 2005 | Comments: 0
File, Edit and View
You don't use those menus, do you? Good, because now you can't in ChatZilla on current Mozilla and Firefox builds! The menus vanished mysteriously one morning, after DOM Inspector got a menu hack-attack. If it weren't for a slight problem with :empty, it'd be ok, but it's not.
Edit: bsmedberg had a good idea to hack around the :empty problem, which I've done into a patch. Hopefully this will be fixed soon in trunk (and will be in 0.9.68.6).
Permalink | Author: Silver | Tags: Mozilla, ChatZilla, Bugs | Posted: 06:05PM on Sunday, 05 June, 2005 | Updated: 06:41PM on Sunday, 05 June, 2005 | Comments: 0
Cairo Burns
So, I added --enable-svg and --enable-canvas to my Mozilla Firefox build config the other day. Apparently that forces me into building Cairo, which, um, doesn't build.
m:\source-HEAD\mozilla\gfx\cairo\cairo\src\cairo-win32-private.h(43) : warning C4005: 'WINVER' : macro redefinition command-line arguments : see previous definition of 'WINVER' ../../../../../../source-HEAD\mozilla\gfx\cairo\cairo\src\cairo-win32.h(66) : fatal error C1189: #error : Cairo was not compiled with support for the win32 backend
make[4]: Leaving directory `/cygdrive/m/tree-firefox-debug/objdir/gfx/cairo/cairo/src' make[3]: Leaving directory `/cygdrive/m/tree-firefox-debug/objdir/gfx/cairo' make[2]: Leaving directory `/cygdrive/m/tree-firefox-debug/objdir/gfx' make[1]: Leaving directory `/cygdrive/m/tree-firefox-debug/objdir' make: Leaving directory `/cygdrive/m/tree-firefox-debug/objdir'
Update: It seems that, on way or another, I ended up with cairo-features.h in the srcdir without it being listed in CVS\Entries, so it never got removed. Thanks to vlad who suggested looking for that file in other locations. Let's hope it builds now.
Permalink | Author: Silver | Tags: Mozilla, Firefox | Posted: 10:51PM on Sunday, 05 June, 2005 | Updated: 02:28AM on Monday, 06 June, 2005 | Comments: 0
It's Monday. I can tell.
You know how you get the feeling of what day it is by how well things go? Well, today has definately been a Monday - and a bad one. Not so much bad as in hardware blowing up, or injuries or anything, just people out to get me. All of them.
Permalink | Author: Silver | Tags: Life | Posted: 09:44PM on Monday, 06 June, 2005 | Comments: 1
Last Minute Panic
Dontcha just love 'em? My work suddenly seemed to decide that everything you could think of needed changing/doing with the project, and with the deadline at 1pm! Oh, and we had some fun with rsync not setting the times on the synced files for part of the day. I've done over 18 hours work over yesterday and today, and man I'm worn out.
And my PSU hasn't arrived yet. europc--
Permalink | Author: Silver | Tags: Work, PC | Posted: 10:25PM on Tuesday, 07 June, 2005 | Comments: 0
poof
I'm off down to London again, so don't expect any bug fixin' 'til Friday!
Permalink | Author: Silver | Tags: Work | Posted: 11:28AM on Wednesday, 08 June, 2005 | Comments: 1
Filtering
Filtering stuff is one of those things everyone wants to do, no-one wants to write the code, and even fewer debug it when it breaks. Luckly, this doesn't stop some intrepid people from adding message filtering to ChatZilla.
Of course, the killer questions are:
-
what to filter with, and
-
what to do when a filter matches?
The first question is relatively easy, we only have a limited number of things known about a message anyway.
-
Actual message text, of course
-
The type of message (PRIVMSG, NOTICE, JOIN, etc.)
-
Source (e.g. the user object)
-
Destination (e.g. the channel object)
-
Handler source. This one is the fun one - it is where the message was displayed 'from', e.g. what code handled it. It may sound useless, except that it will be the default destination if no filters match, and will mean messages for a particular channel will appear on that channel (at least by default!).
That was easy. So what about the actions? They are more fun, as this is where the real flexibility will lie in the system. What I see being included:
-
display on source view
-
display on destination view
-
display on handler view
-
display on handler's parent view
-
set message priority (superfluous, activity, attention)
-
make sound (beep or WAV file)
-
activate/flash window
-
run some JS?
Update: Draft spec is here: http://hannibal.digitalrice.com/msgfilter/
Permalink | Author: Silver | Tags: Mozilla, ChatZilla, RFE | Posted: 05:13PM on Friday, 10 June, 2005 | Updated: 10:57AM on Tuesday, 14 June, 2005 | Comments: 0
null exceptions
Ever had the feeling the program is simply mocking you? Try doing addEventListener("foo", null, false) in a recent Mozilla or Firefox and you might understand.
It doesn't just throw an error (which seems a fairly sensible thing to do, given I'm providing bogus data), it throws a null error. That's not an error which says only "null", the actual error object itself is null! What gives?
With my basic knowledge of how XPConnect & co. work I can't work out how this can happen normally. The following three cases are what normally happens:
-
If it can't convert the input data to make the wrapped call, you get a huge long error about "arg 1" or whatever.
-
If the native code returns a failure code, you get an exception generated by XPConnect (which is just as excessive as the argument error one).
-
If the native code returns a success code, you get the _retval, and not an exception.
This leaves only one option I can think of: the native code is returning a failure code, but also setting the XPConnect exception object explicitly to null (which allows native code to return nice exceptions to JS and other scripted languages, while still returning the 'nice' NS_ERROR code to native callers). I just can't find out where.
Permalink | Author: Silver | Tags: Mozilla, XPCOM | Posted: 11:38PM on Sunday, 12 June, 2005 | Comments: 0
もしもし?
Anyone home?
sigh
The world is out to get me.
Permalink | Author: Silver | Tags: Life | Posted: 09:30PM on Friday, 17 June, 2005 | Comments: 0
Away 20th - 24th
I will be off down to Cov for the entire week, to generally socialise and stuff. Since multiple companies are sucking heavily with regards to something as simple as getting a PSU to me, the computer I am taking may or may not actually have a PSU in it when I take it. I'm willing to bet it wont. The upshot of this is that I may have significantly limited access to anything Internet-like for a few days, but damn well better be on-line by Wednesday.
Contacting
Since I wont be taking my laptop, twpol.dyndns.org will stay up and fully functioning (bearing with issues like ADSL going pop), and all the usual contact methods will work as good as they ever do.
Note: It seems warwickcompsoc.co.uk has died as of 12:22AM UK BST, suspected to be heatstroke. That wont be back until last morning Monday I suspect.
Marking
I have a mostly working line marker! It's not perfect (when it appears, it doesn't scroll the line into view, meaning it is really hard to tell when it is occuring to the unfocused view), but it works for the most part. Still got some issues with scrollDown and force to sort out...
Permalink | Author: Silver | Tags: Fun, ChatZilla | Posted: 01:19AM on Sunday, 19 June, 2005 | Comments: 0
PSU!
It's finally arrived! Wooyay wooyay!
Not that I'm there, of course, but it means me new box will work when I get home.
Permalink | Author: Silver | Tags: PC | Posted: 05:55PM on Thursday, 23 June, 2005 | Comments: 0
Speshul Networking
My new box (GALINSTAN) is up and working great - I'm writing this from it. However, it is running Windows XP 64bit (which is great fun) and I lack wireless cards that have network drivers (from what I can find out, only one or maybe two companies have got 64bit drivers currently, which is a shame). So I decided to simply route the small physical LAN in my room through one box that can use the wireless. Here's a summary of before:
|
Computer
|
Wireless ID
|
Physical ID
|
OS
|
Spec
|
|
BRONZE
|
[DHCP]
|
40
|
Win2K Pro
|
200MHz P2, 32MB RAM
|
|
GOLD
|
[DHCP]
|
41
|
Win2K Pro
|
1GHz P3, 384MB RAM
|
|
SILVER
|
[DHCP]
|
42
|
Win2K Pro
|
750MHz P3, 192MB RAM
|
|
Nice and simple - each box is on both the wireless (main) LAN using DHCP and also on my physical mini-LAN by fixed IP. I added Galinstan thus:
|
Computer
|
Wireless ID
|
Physical ID
|
OS
|
Spec
|
|
GALINSTAN
|
|
44
|
WinXP 64bit
|
2GHz AMD64, 1GB RAM
|
|
Then came the fun bit. I needed one of the three original boxes to route between the networks. So I just enable IP routing, right?
A few hours later, I finally found the key - literally.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters IPEnableRouter: 0x00000001
Set that and reboot. At least ipconfig /all agreed with me now. Of course, it's all very well having the box route, but everyone else needs to know this...
This was easy, luckly, and just involved setting the gateway on each box (BRONZE, SILVER, GOLD and GALINSTAN) to 41 (i.e. GOLD), which I'd picked to be the router. That almost works - packets go flying out onto the wireless network, but of course the replies don't know how to come back! So a single persisten route was added to PLATINUM (the wireless router box) to route anything for the physical mini-LAN to GOLD's wireless IP (which I'd now reserved in the DHCP server so it was effectively static).
Whew.
It worked.
I now have 4 boxes in my room, all with 'net access, and all accessible from the house router (meaning I can forward public ports to them for services as nessessary).
Permalink | Author: Silver | Tags: Home, Network | Posted: 04:14AM on Sunday, 26 June, 2005 | Updated: 04:14AM on Sunday, 26 June, 2005 | Comments: 0
I Never Could Get the Hang of Thursdays
- Arthur Dent, The Hitchhiker's Guide To The Galaxy, by Douglas Adams
You all know what I mean.
On a slightly better note, mozilla.org finally decided to start telling developers what is going on. About time, too.
Permalink | Author: Silver | Tags: Life, Mozilla | Posted: 08:57PM on Friday, 08 July, 2005 | Comments: 0
What's in a Menu?
Everything: you use them almost all the time when using the mouse, and pretty often when using the keyboard - though it varies depending on the app.
ChatZilla's menus have been evolving over time since they first appeared, probably at least 5 years ago now, and are a in a bit of a mess. As part of fixing this, I've drawn up the current menus in the Mozilla Wiki. If anyone wants to move stuff around, into the "right" place, and add notes, they're welcome to, after all, it's a Wiki.
Permalink | Author: Silver | Tags: Mozilla, ChatZilla, Bugs | Posted: 05:45PM on Tuesday, 12 July, 2005 | Comments: 0
It Broke
Begining build of ChatZilla 0.9.68.6... WARNING: output XPI will be overwritten. Checking XPI structure..... done Checking JAR structure.. done Updating Firefox Extension files..... done Updating Mozilla Extension files.... done Constructing JAR package..C:\Program Files (x86)\Cygwin\bin\perl.exe (3972): *** recreate_mmaps_after_fork_failed ERROR (0) Cannot determine cygwin mount points. Exiting. 3 [main] perl 3972 fixup_mmaps_after_fork: WARNING: VirtualProtectEx to return to previous state in parent failed for MAP_PRIVATE address 0x1ED0000, Win32 error 87 538 [main] perl 3972 fixup_mmaps_after_fork: WARNING: VirtualProtect to copy protection to child failed forMAP_PRIVATE address 0x1ED0000, Win32 error 487 680 [main] perl 3972 fixup_mmaps_after_fork: ReadProcessMemory (2nd try) failed for MAP_PRIVATE address 0x1ED0000, Win32 error 487 C:\Program Files (x86)\Cygwin\bin\perl.exe (3972): *** recreate_mmaps_after_fork_failed 6 [main] perl 2916 fork_parent: child 3972 died waiting for dll loading
And thus ended my Cygwin Perl installation. No matter of rebaseall-ing or complete Cygwin reinstalls could fix it, and I don't even understand precicely what the error is.
So a short while later, I had myself an ActiveState ActivePerl install, perl-cygwin.sh (a wrapper I wrote to use ActivePerl in places expecting Cygwin Perl), and some tweaks to makexpi.sh to let me specify the Perl engine (save me doing path & symlink hacks). And thus it did build! Yay!
Permalink | Author: Silver | Tags: ChatZilla, Cygwin | Posted: 08:40AM on Tuesday, 19 July, 2005 | Comments: 0
Running Late
So much for early-June. Well, the tree is still frozen, which doesn't help at all. Plus reviews are slower than expected. We're also not going to get 0.9.69 out any time soon at all - the next release will be 0.9.68.6, hopefully not too far away now.
We are, however, making slow but steady inroads into the bug list, and have a few people outside the 'core' (Robert Ginda, Samuel Sieb and myself) who are doing patches and generally helping a lot. It sounds like we're going to get a better (ish) reconnect system shortly, too.
Permalink | Author: Silver | Tags: ChatZilla | Posted: 01:30PM on Thursday, 21 July, 2005 | Comments: 0
Mozilla Update FTS
FTS? Whatever, Mozilla Update is not doing itself any favours. Apparently (according to the developers' page) version 1.0.1 of my extension was denied, despite it being a simple bug-fix over 1.0.0 (which was approved). Naturally there is no indication as to the reason. I would check my mail, but I can't. I've waited two (or is it three now?) days to get this far, and it sucks.
What really worries me is that it may have been denied just because it was a different reviewer. "How does that work?" I hear you ask. Simple. My extension, while small at only 5KB, does a lot of poking at the Windows Registry to do its job. This is not trivial stuff, and it is known to not always work (I can't find any platform/setup locally that fails, however, which doubly-sucks). Version 1.0.1 is better at working that 1.0.0 - it actually fixes a very specific bug for Firefox 1.0.x users, for example.
Yet all it takes is one reviewer who has a system where it happens to not work and all the users lose out. Bring on the multi-reviewer system - oh, and a few times more reviewers too.
Permalink | Author: Silver | Tags: Mozilla, UMO | Posted: 04:12AM on Monday, 01 August, 2005 | Updated: 04:12AM on Monday, 01 August, 2005 | Comments: 0
Branching on Friday?
So Gecko 1.8 is branching on Friday, and there are only 126 bugs to fix before tomorrow night. Good luck!
Update: Oops, seems they're using bug 300860 to track blocking for the branch, so only two bugs left. This will be very amusing, however, when they realise they have a branch with 120 bugs to fix on it.
Permalink | Author: Silver | Tags: Mozilla | Posted: 01:44PM on Wednesday, 10 August, 2005 | Updated: 04:29PM on Wednesday, 10 August, 2005 | Comments: 0
RSS is dead, long live Feedview
So the RSS button is gone from the statusbar, and now appears inside the URLBar. Yes, you heard me (and saw, too). So we now have a less-discoverable, less accessible, less flexible solution (no popup menu with a list of feeds any more!). And to top it all off, they are viewed in a hacked-up badly-integrated version of the Feedview extension (note: I have no idea if the Feedview extension suffers from any of the same issues as Firefox does, and don't mean to imply such), meaning you get suck and more suck, including such gems as bug 302749.
Permalink | Author: Silver | Tags: Mozilla, Firefox | Posted: 10:34PM on Friday, 12 August, 2005 | Comments: 2
To be themed or not? That is the question
Since the menu change in Firefox to make the menus look like WinXP's themed style on all versions of Windows, rather a lot of people have been upset. Quite understandable, really, as the change has just made Firefox's menus look seriously lame on non-themed systems.
So much is the annoyance, that I've gone and started hacking nsNativeThemeWin.cpp to try and make it support theming menu components on Windows. It ain't pretty, but I've managed to fix some bugs with the toolbox and toolbar appearances already (which help a lot), and have got basic themed menupopup and menuitem support going. It lacks the classic appearance currently but, now I know my way around, that should be easier.
Permalink | Author: Silver | Tags: Mozilla, Theming | Posted: 04:10PM on Saturday, 10 September, 2005 | Comments: 0
Style
Well, it's taken a few days of work, but Firefox's finally look right in the Luna XP, Windows XP and Windows Classic themes. Woo.
Permalink | Author: Silver | Tags: Mozilla, Theming | Posted: 10:19PM on Sunday, 11 September, 2005 | Comments: 0
It'll Never Make It
In case you hadn't guessed, I don't believe there is any way my work to fix Toolkit's toolbar and menu appearances on Windows will make it into Firefox 1.5. The patch has been ready and waiting for review since 2005-09-18, yet it'll still completely miss. All it does is demonstrate the problems with the review process. :-(
Also, I've stopped working on the menu shadows bug due to yet more Mozilla.org politics (drivers, again).
Permalink | Author: Silver | Tags: Mozilla, Theming | Posted: 02:02AM on Monday, 03 October, 2005 | Comments: 0
Drivers Pull Stupid Stunt
They've gone and done it folks. Without any warning, they have suddenly decided that my branch-only ban-aid needs to land on trunk for baking. WTF?
Permalink | Author: Silver | Tags: Mozilla, Theming | Posted: 02:11PM on Thursday, 06 October, 2005 | Comments: 0
One Regression
It seems that only one regression has so far turned up from the unexpected trunk landing. That's a bit of surprise itself, but there you go.
I'm still expecting drivers to say "actually, no" to the whole thing landing on branch, even though Asa did set blocking1.8rc1+ on the 5th, but we'll see. Asa himself is already going and minus-ing quite a lot of stuff, so things don't look good.
Permalink | Author: Silver | Tags: Mozilla, Theming | Posted: 12:04AM on Tuesday, 11 October, 2005 | Comments: 0
There Is No Headline That Adequately Explains This
I have now totally run out of patience with drivers, and I honestly don't know what I'll do the next time the screw me or any of 'my' bugs about.
Yes, they forced the theming patch on to branch, but they also screwed it up, in two ways. It is both impressive and unbelievably embarrassing.
Permalink | Author: Silver | Tags: Mozilla, Theming | Posted: 02:00PM on Wednesday, 12 October, 2005 | Comments: 0
It Died
Well, that's it folks. The patch is no longer in the branch, and the menus in Firefox 1.5 will look like crap unless you use the Windows XP default 'Luna' theme.
I wont go in to any more detail than I did in the bug, though I will say that I will continue with this work on trunk for 2.0, due next millennium.
Permalink | Author: Silver | Tags: Mozilla, Theming | Posted: 08:31PM on Friday, 14 October, 2005 | Comments: 0
Building the Builder
Well, I was bored one night and as usual, the result is something useful, but only to me. Having 4 computers here makes things weird enough, but now I can check the status of my build box (and will soon be able to queue up commands) from the web browser on my main desktop - all via my web server box. Wheee!
Permalink | Author: Silver | Tags: Mozilla | Posted: 11:46PM on Saturday, 22 October, 2005 | Comments: 0
Native Theming on Windows
This is just to outline my plans for working on native theming for menus and toolbars, and related bugs:
-
First priority is to get the pure-CSS appearance in winstripe right. The target appearance is Windows XP Classic. This is being worked on in bug 313388. This is currently going well, and is nearing completion.
-
One single native bit will be written with the pure-CSS version - -moz-MenuBarHoverText, which will be (at this stage) implemented (on platforms which use winstripe, or maybe all) to work exactly like the CSS colour chosen for the hover text colour.
-
The above work will be checked in to trunk CVS (after reviews, etc.) and will remove the -moz-appearance properties currently there. This will mean everyone will see the pure-CSS appearance, and this is exactly what is intended.
-
Any problems found with the pure-CSS appearance (excluding, obviously, "it's not themed!" which I know a few idiots will file) will be fixed at this point, as once the native code is re-enabled, only odd groups of people will ever see it again (OS/2 users, for example).
-
At this point, there will be an expected regression with the Firefox Bookmarks toolbar, which will be fixed (the exact method is yet to be decided).
-
Work will then begin on the native code necessary to support the theme engine in Windows XP. This may involve some minor tweaks to the CSS, but the ideal result is that only -moz-appearance properties are added. -moz-MenuBarHoverText will be adjusted (on Windows only) to follow the correct rules for menu bar text with themes.
-
This will be reviewed and checked in, and that will be it done.
-
Regressions will be fixed here, of course. :-)
It may seem like a long-winded way of doing things, but it will mean you get a top-quality result, as each key part will be written separately, tested separately, and checked in separately (for regression spotting).
Permalink | Author: Silver | Tags: Mozilla, Theming | Posted: 12:56AM on Wednesday, 02 November, 2005 | Comments: 7
Weblog Issues
I've noticed a few bugs and general issues with my weblog software today, so I'll just write it down so you know and I don't forget to fix it on Friday or at the weekend.
-
RSS feed for comments is needed (both for each post, and globally).
-
RSS feed for tag list, and for posts in each tag needed.
-
RSS feed for each date grouping allowed, maybe.
-
If you preview a comment post for a second time, the URL gains an extra "/", which messes up the stylesheet loading and the page title.
-
Link to next month is broken when next month is December (the page title is right, but it is using month 00, instead of 12).
-
Link to next/previous month doesn't change year if wrapping is involved.
Permalink | Author: Silver | Tags: Weblog | Posted: 02:20PM on Wednesday, 09 November, 2005 | Comments: 0
Mysterious Build Errors
Ever since bsmedberg landed bug 313309 part 2, I've been getting the following build error:
nsIInterfaceRequestorUtils.cpp Building deps for ....../../source-HEAD/mozilla/xpcom/glue/nsIInterfaceRequestorUtils.cpp nsIInterfaceRequestorUtils.cpp m:\tree-firefox-main\objdir\dist\include\xpcom\nsIProgrammingLanguage.h(35) : warning C4003: not enough actual parameters for macro 'NS_DEFINE_STATIC_IID_ACCESSOR' m:\tree-firefox-main\objdir\dist\include\xpcom\nsIClassInfo.h(36) : warning C4003: not enough actual parameters for macro 'NS_DEFINE_STATIC_IID_ACCESSOR' ../../dist\include\xpcom\nsIInterfaceRequestor.h(41) : warning C4003: not enough actual parameters for macro 'NS_DEFINE_STATIC_IID_ACCESSOR' m:\tree-firefox-main\objdir\dist\include\xpcom\nsISupportsUtils.h(202) : error C2039: 'GetIID' : is not a member of 'nsIInterfaceRequestor' ../../dist\include\xpcom\nsIInterfaceRequestor.h(38) : see declaration of 'nsIInterfaceRequestor'
This is the same error that the 'creature' tinderbox was getting, but unlike that machine, it didn't go away after all the bustage-fixes.
After nuking objdir/dist and objdir/xpcom/base - neither of which helped - I just nuked objdir/xpcom and it finally looks like it might work, having got twice as far into the build as the error point (though it would not surprise me if I needed to nuke other totally random directories later).
The build system is just broken.
It's getting to the point where I'm tempted to make an auto-build-fixer, that just keeps nuking random objdir folders until it works. It would be a more productive use of my time than fixing all these damn problems by hand.
Permalink | Author: Silver | Tags: Mozilla, XPCOM | Posted: 02:26AM on Saturday, 12 November, 2005 | Comments: 0
Weblog Issues - Fixed
I've gone through and fixed all but one of the items listed previously. The only item remaining is the RSS for tags and the tag listing itself.
If you find anything is not working, please do comment, and I'll fix it. Please note that the comments feed is not linked from anywhere, as it is only useful for me monitoring new comments.
Permalink | Author: Silver | Tags: Weblog | Posted: 06:44PM on Saturday, 12 November, 2005 | Comments: 2
Progress Bars
Continuing from my previous post about my Mozilla build tracker, I've added progress bars to the display while it is building. Naturally, it's all done with smoke and mirrors [1], and (perhaps surprisingly) doesn't mess up the display on Internet Explorer at all, though it doesn't show the progress bar.
Actually, thanks to the IE DOM Explorer, part of the IE Developer Toolbar (download from here), I've just fixed the progress bar to work in IE. Woo!
[1] Unofficially, it is all done with CSS, DIVs and PNGs, but we don't like to talk about them...
[2] Worryingly, it is more usable than Mozilla/Firefox's DOM Inspector, for me. I think it's partly that the select-by-click in the IE DOM Explorer totally trumps the same feature in Mozilla/Firefox.
Permalink | Author: Silver | Tags: Mozilla, IE | Posted: 03:23AM on Friday, 18 November, 2005 | Comments: 0
ChatZilla 0.9.69
The next ChatZilla release will be called 0.9.69, mostly due to the excess of changes that have occurred on trunk since the last release. This will be the 0.9.68.5 codebase merged to trunk, plus some extra compatibility updates; this means all the trunk changes since then will be included - and there are a lot of them!
Look forward to it!
Permalink | Author: Silver | Tags: ChatZilla | Posted: 12:27PM on Wednesday, 30 November, 2005 | Comments: 1
It's Out!
I suppose I probably should mention that ChatZilla 0.9.69 has been released. Woo.
We're currently working through a couple of big issues, but the release is great. The main problem anyone is likely to encounter is bug 319066, which should only occur if you select the top user in the userlist, and then switch tabs.
Permalink | Author: Silver | Tags: ChatZilla | Posted: 04:48PM on Monday, 05 December, 2005 | Comments: 0
ChatZilla 0.9.69.1
It's been released, but may take a few days to appear on addons.mozilla.org. This update fixes the userlist/tab switching issue mentioned previously, as well as some less interesting things, like adding support for /dcc-accept with non-regexp parameters.
As ever, the revisions list has the gory details, including bug links and download link for those too impatient for addons.mozilla.org.
Permalink | Author: Silver | Tags: ChatZilla | Posted: 02:14AM on Saturday, 17 December, 2005 | Comments: 0
Weblog URL updates
Well, I finally got around to nuking that annoying ".pl" in the weblog's URLs - all the URLs should now not include it. Naturally, I've put a redirect from weblog.pl to weblog, so no links should break.
It took quite a bit of thinking, but it works - not showing file extensions is not one of IIS' strong points, however, it has more than enough power to do it if you know what you're doing. :-)
Please comment here if you find any bugs or other issues with this change, or indeed any part of the weblog system.
Permalink | Author: Silver | Tags: Weblog | Posted: 03:23AM on Saturday, 17 December, 2005 | Comments: 1
Feed Icons
It's nice to see a good bit of collaboration over something as visually important to users as icons. Since this is all good for the user, Feed Icons has sprung up to help everyone follow suit, and so my weblog now has those funky little orange icons in the top-right corner of every page with a feed.
Permalink | Author: Silver | Tags: Weblog | Posted: 06:16PM on Saturday, 24 December, 2005 | Comments: 1
Contributor Relations
The Mozilla Foundation are really trying my patience with two issues right now:
-
No tinderbox graphs.
-
No despot (user accounts thing).
In both cases, the relevant pages have simply been blocked, returning error 403 or 500 and no information whatsoever has been provided. The closest I got was after filing a bug for the first one, where I got a comment from one admin of "That's on purpose. The script has issues.". The only information on the Despot issue is "security" - fat lot of good that is!
I'm am going to assume that both things are currently exploitable, which means that they should be fixing them, which they do not appear to be doing. If they know they can't fix them fast (or don't care), as appears to be the case, where's the bloody message saying so? It's absolutely appalling.
Permalink | Author: Silver | Tags: Mozilla | Posted: 07:51PM on Saturday, 07 January, 2006 | Comments: 0
Why Peer Pressure Sucks
It may seem obvious to some, but the level it sucks at is surprisingly high, and causes some rather bad results.
Let's start with school; for reasons not entirely known to me, by about age 12 or 13 I'd already been labeled a "geek", in so much as I was "always right". Sure, I was probably the best in my year at maths, and not bad a physics, but quite how it all extrapolated I'll never know. Anyway, this led to someone always laughing if I answered a question wrong, which in turn meant by year 10 and 11 (age 15) I just didn't answer anything unless I was really sure. That kinda sucked. It also resulted in most of my shyness.
At collage (age 16 - 18 here in the UK), things were actually good; very little of the teacher asking questions, lots of just doing the work. Plus for various things, some people actually came to me for help.
(This is all going somewhere, promise.)
University (18 - 21) was even better, as there was entire groups of people with the same (and better) knowledge of things I'm interested in, and (probably much more importantly with regard to enjoying my time at Uni) people who liked me for being me, not because I knew the answer to something.
Since then (2 and a bit years), I've stayed in the IRC channel for the Computing Society (of which I was the webmaster for my time at Uni), and that has brought about another change. Firstly, I'll just say that IRC is probably the single worst way to have conversation, discussion, argument, whatever, with more than two people (it sucks pretty hard even for two people when it is an argument).
Anyway, one of the things that happens on IRC is the "mob effect", where one person says something that a lot of people disagree with, and they get mobbed. Often so much so that they simply don't get any chance to explain, defend or otherwise expand on their initial comment. The result of this is that I suspect a number of people, myself included, simply don't bother saying what they think sometimes, because they know that a) no one will actually listen, and b) they wont get a chance to explain anyway.
This has been exemplified over the past few days, as the IT people at Uni had some issues on Friday, and members of the IRC channel have been steadily decrementing their karma (karma works by saying Thing++ or Thing-- to show what you think of Thing), and although I don't want to defend what happened on Friday, I do object to a number of the reasons people have used for the decrementing, as well as the sheer volume of it, but I wont say anything because of the issues above.
Finally, to bring a Mozilla.org side to this whole story; I simply don't file bugs when things break here with my own builds any more, even though it is obvious that it's nothing to do with me. The reason: because certain people have (incorrectly) blamed things on the fact my builds are depend builds and other things relating to my setup. Either depend builds are fucking supported or they are not. My conclusion is that they are (unofficially only) most definately not, and that's simply because the entire build system is a pile of crap that breaks if you look at it funny.
And this is why peer presure is bad - it makes people keep things to themselves when they really shouldn't.
Permalink | Author: Silver | Tags: Life | Posted: 03:39AM on Tuesday, 24 January, 2006 | Comments: 0
Instrumentation Data
We're actually getting some interesting data coming it from the instrumentation "startup ping".
In particular, you can see that people updated from Firefox 1.5 to 1.5.0.1 almost the moment it was released.
We can also estimate that there are approximately 1100 new or updated ChatZilla users a week (calculation: sum up new installs [the numbers on the pages linked, 40], divide by the number of days [25], multiply by 700 [1% and we want per-week]).
Permalink | Author: Silver | Tags: ChatZilla, Firefox | Posted: 03:55PM on Monday, 06 February, 2006 | Comments: 0
My First Places
So I tried building Firefox with Places a couple of days ago. It ain't pretty. It's definitely good that it isn't being released for a while yet.
-
Importing my history and bookmarks took 15 minutes and have no UI what so ever. I only didn't kill the Firefox process using 100% CPU because I saw some sqlite files in my profile being created and modified.
-
The imported data is 74% bigger than the original. This seems like a rather big increase.
-
My personal toolbar is now empty, and I can't add stuff to it. (The folder in Places for this has the right stuff on, though.)
-
The URL bar does not update when changing tabs or if the page loads. This means it only ever displays what I last typed.
-
The URL bar has no autocomplete, either as-you-type or using the drop-down button.
-
All links appear unvisited, despite clearly being in history.
-
None of the navigation toolbar works either, so no back/forward/reload/stop. Not even the shortcuts work.
-
The browser no longer opens my homepage on start, even though it's still configured the same. It just loads about:blank, and if I click the Home button it loads the Google start page!
-
Add Bookmark menu item does nothing.
-
Selecting either the History or Subscriptions items in Places itself hangs Firefox for 5 - 10 seconds. I think this is the calendar, rather than the data, as searching the history only takes 1s second.
-
There is no way to select all dates in the calendar, even though it is (apparently) the default when going to a view.
-
Expanding or collapsing a folder in Places' top-left box takes 5 - 10 seconds if Subscriptions is selected.
-
Switching folders keeps the search string, but doesn't search the newly selected folder.
-
Searching "Current Collection Only" doesn't do anything.
-
Adding a search filter then can't be removed.
-
Filters only allow "starts with", "is" and "is on site" for location matching. Where's "contains"? Have to use "Containing the text" for that, which includes the title.
-
No title search option! Have to search title and URL together.
-
The icons for items are not fixed, so appear badly inconstant, as they show the favicon.
-
Properties context-menu item does nothing, at all, anywhere in Places.
-
Quitting Firefox closes all windows, then spends at least 15 seconds using 100% CPU (saving something I think).
Please don't bother pointing out that Places isn't finished yet - I know that, and it sure shows.
Permalink | Author: Silver | Tags: Firefox, Places | Posted: 11:38PM on Sunday, 05 March, 2006 | Comments: 2
SUSE Net-install
So, here I am, 1am and nothing (interesting) to do. Time for something completely random, I think! Let's do a network install SUSE.
-
plus Like the graphical "thing" that starts right away from the CD.
-
minus "Press Esc for more information" it says. Do that, and you're dumped to text-mode - which is ok - but there's no way to get back to graphical-land (that I could find).
-
minus In the default graphical-land, the download of the network installer (all 65MB of it!) happens with no progress indication. The text-mode loader does show the percentage, though.
-
minus After all that pretty graphics (that did very little, mind), it imediately dumps you into text-mode YaST. Not fun!
-
minus Navigation in the text-mode YaST is a real bitch. It just seems to not follow any sort of convention. Esc never seems to close things, even the Help window which says it does! (Thank Bob that F1 also closes that window.)
-
minus It asks me whether I want KDE or GNOME. How the f**k should I know? So it helpfully explains how my decision will affect things:
-
KDE is a powerful and intuitive desktop environment that uses Kontact as its mailer and Konqueror as its browser and file manager.
-
GNOME is a powerful and intuitive desktop environment that uses Evolution as its mailer, Firefox as its browser, and Nautilus as its file manager.
Joy of joys. They're the same. Why tell me what apps they use, when I've no idea what the difference in them are? If I didn't already know what these apps are like, or that KDE is supported better by SUSE, I'd be completely fucked at this point - it's anybody's guess which would be the better option. Oh, and there's an Other button too!
-
minus Now it analyses my system, and starts "Evaluating package selection..." (all I did was pick KDE), which really means let me download some more data with no progress indication. Judging by the time taken and my network graphs, I'd say it is probably downloading about 30MB.
-
minus And it's at this point (2:33am) that YaST just hangs entirely. Woohoo. Can't "click" (use the shortcut Alt-<letter>) any buttons, bring up help or anything, and it still says "Analysing your system..." under Software and Language.
-
AHA! 8 minutes later (!) it finally is done and ready for me to use it again. That was really bad.
-
minus Doing anything in the "Installation Settings" screen seems to take a decade to work, even opening the list of things to change (4 items)! Click accept button (2:46am).
-
Two minutes later, is asks if I'm sure I want to install! And now it starts formatting the disk.
-
minus By 3am, it's failed on the formatting. "An error occured during the installation." Joy.
And that's it. Can't get it to continue from this point - it spams something to the screen that looks like an error, but overwrites it with the error dialog almost instantly, and Ctrl-Alt-<number> doesn't work so I can't get at any logs or anything. Sucky.
Permalink | Author: Silver | Tags: Linux, SUSE | Posted: 04:46AM on Thursday, 09 March, 2006 | Updated: 04:47AM on Thursday, 09 March, 2006 | Comments: 0
Technology vs. Common Sense
If you ever thought e-mail <--> newsgroup gateways were a good idea, think again. I think the following quote sums it up absolutely perfectly:
This is horrible. It feels like I’m playing some 21st century Web 2.0 version of “telephone”.
Permalink | Author: Silver | Tags: Mozilla, Newsgroups | Posted: 01:36PM on Thursday, 30 March, 2006 | Comments: 0
And So It Begins
Here we go again, and this time I'm not in the mood for any shit. I just want to warn everyone that if I get messed about with this again, I'm just going to stop. They can find some other deluded soul to fix their mistakes next time.
Permalink | Author: Silver | Tags: Mozilla, Theming | Posted: 05:09AM on Sunday, 09 April, 2006 | Comments: 1
The Ghost Buster now supports Thunderbird
That's right, we've finally got Thunderbird 1.5 support plugged in to the JavaScript Debugger. This also fixes the -venkman command-line flag to work with all toolkit-based apps (Firefox, Thunderbird, etc.).
Permalink | Author: Silver | Tags: Venkman, Thunderbird | Posted: 11:28PM on Thursday, 13 April, 2006 | Comments: 0
Purty Pictures
Ever wondered what download rate the top extensions on Mozilla Addons get? How much it varies by hour/day? Even which are rising and which are falling?
Well, now you can.
(Yes, I was bored. Very bored.)
Permalink | Author: Silver | Tags: Firefox, UMO, Fun | Posted: 08:35PM on Sunday, 23 April, 2006 | Comments: 3
Anger Rising
It's not a good day, and there's plenty to piss me off:
-
Someone broke the authentication for Trac (wants-to-be-Bugzilla when it grows up thing) for the IRC bot I work on.
-
Possibly same someone put a disrespectful message on the test version of the new Computing Society website.
-
Still no-one wants to review the patch which is blocking my theme work.
-
My ISP is dropping my ADSL connection an average of 15 times a day for the last two weeks.
Permalink | Author: Silver | Tags: Mozilla, Theming, Bugs | Posted: 03:14PM on Saturday, 20 May, 2006 | Comments: 0
Firefox's Anti-Phishing
So I thought I'd try it out, as it's supposedly worth using. Ha. It suffers from a few rather fundamental problems here:
-
It waited three seconds before claiming the test page was actually a phishing page, even though it's set to use a locally stored list.
-
It changed my browser's configuration just to display the warning - it turned on the navigation toolbar, which would have been fine if it then hid it again after, but it didn't.
-
It positions its "disabled webpage" XUL code horribly, which causes the following extra statusbar row:
To change into:
In other words, it inserted itself between extensions and other code usually attached to the statusbar, and the statusbar itself, causing them to all end up at the top of the screen. If you don't see how silly this is, look what happens with the find toolbar:
-
Finally, it completely fails to display the "disabled" webpage. I expect this is Canvas and Cairo being shit, but it none the less makes the entire feature rather sucky.
Permalink | Author: Silver | Tags: Firefox, Phishing | Posted: 02:32PM on Monday, 29 May, 2006 | Comments: 0
BFL - June 19th to 23rd
So it's that time of year again, when I disappear for an entire week to spend it in a room full of 55 other computer 'freaks' and generally have a good time (that's play games and socialise, before anyone gets any weird ideas!).
PPM and CPAN
The past few days I've been building up my own PPM (ActiveState Perl Package Manager) repository, which basically involves downloading CPAN packages, building them, testing, then packaging up the built code. It's really not fun, as plenty of CPAN packages fail to build, or fail tests, and generally cause problems. Still, it's getting there. The aim, what there is of one, is to have all the packages needed for Task::Catalyst and the new CompSoc website project. I think the website will be finished before my repo. is. :(
Permalink | Author: Silver | Tags: Fun, CompSoc | Posted: 05:09PM on Friday, 16 June, 2006 | Updated: 05:26PM on Friday, 16 June, 2006 | Comments: 0
Debugging Hung Scripts
There's some good fun work out on in bug 341764 allowing you to just smack "Debug" on the ultimate in annoying dialogs. I'm going to love that when it's done.
(Only two days to go!)
Permalink | Author: Silver | Tags: Mozilla, Venkman | Posted: 02:49PM on Saturday, 17 June, 2006 | Comments: 0
ChatZilla 0.9.74
It is coming, eventually. The plan for last Sunday didn't quite work out, but we're now ready to go and should be rolling it out this coming weekend instead. To come in this version:
-
/who now accepts multiple parameters (useful for some of the more extended syntaxes some servers support).
-
A small leak for plugins has been fixed.
-
Sending files with DCC closes the file handle in more cases so it shouldn't stay locked after.
-
When midnight happens, the messages about the logs changing have been suppressed.
-
If your connection to a server drops, ChatZilla will now try to reconnect to the same server first, before moving on to the next one in the list.
Permalink | Author: Silver | Tags: Mozilla, ChatZilla | Posted: 04:43PM on Wednesday, 21 June, 2006 | Comments: 0
On Life And Books
I ordered some books from Amazon last Sunday and, much to my surprise, they turned up on Tuesday morning (despite being scheduled for dispatch on Wednesday). The result is that I've been reading book one in Robin Hobb's Farseer trilogy, "Assassin's Apprentice".
Assassin's Apprentice, and I suspect the others in the trilogy, are written in a slightly odd 1st person recollection of events. Took a little while to get used to it, but it actually works very well for the most part - once you actually get to know the main character who is doing all the reciting of events. I'm wondering if there will be any significance to this way of telling the story, but for now it's just different.
It's a good read (so far), though some bits brought back some rather painful memories and regretted times for me. Not that that stops me reading a good book! I'm currently about three quarters through book one, so we'll see what happens over the weekend - hopefully I wont finish the entire trilogy in 3 days, like I did with some previous books (it's not that I don't want to read more - quite the opposite - but reading them all in one go both uses up a lot of free time and leaves you suddenly with a huge void when you finish).
Permalink | Author: Silver | Tags: Life | Posted: 09:17PM on Friday, 30 June, 2006 | Comments: 0
The Art of the Proxy Configuration
ChatZilla doesn't support HTTP proxies. Well, I say "HTTP proxies" but this particular thing apparently has far too many names:
-
HTTP proxy [X-Chat]
-
SSL proxy [Firefox]
-
CONNECT proxy
-
URL proxy
-
Secure proxy
-
(incorrectly) HTTPS proxy
-
"Proxy" protocol [mIRC]
Personally, most of them are completely meaningless terms. "HTTP proxy" is what everyone (except Ben C) calls it.
The problem that we face is relatively simple from the top, but a real pain to actually fix: we ask Necko (Mozilla's network layer) to pick the proxy to use.
The result is that it will ask PAC if so configured, just return the SOCKS v4/v5 proxy, or return no proxy. The user has no way to configure Necko to give IRC the HTTP proxy.
There are a few things we can do, none of which seem that good:
-
Add a single option to force ChatZilla to use Necko's HTTP proxy.
-
Add an option to pick between none, HTTP proxy and SOCKS proxy.
-
Add an option to override Necko, and also add host/port settings.
The real problem is that adding any options will be creating two locations for proxy configuration. Could we automatically pick when to ignore Necko's choice? Maybe. Should we? Probably not.
If only I got paid for doing this...
Permalink | Author: Silver | Tags: Mozilla, ChatZilla | Posted: 04:48PM on Tuesday, 04 July, 2006 | Comments: 1
What Value Tinderboxes
The Mozilla Foundation did a major colo move on Saturday. Naturally, all the tinderbox trees were closed from Friday evening so that no-one tried to do anything silly during the move.
Now, it is Monday and the current tree has the following tinderboxes:
-
Linux comet Dep release
-
Linux lhasa Dep release (gtk2+xft)
-
Linux nye Dep bloat
-
MacOSX Darwin 7.9.0 planetoid Dep (temporary)
-
MacOSX Darwin 8.7.0 bm-xserve02 Dep Universal release
And the only reason the tree is currently still closed is this:
"The tree is CLOSED until we get luna or btek tinderbox up, for reliable Tp coverage."
Both luna and btek are Linux tinderboxes. That means that no-one cares that there are no Windows build boxes currently up and running properly. Seriously. That is just lame.
There is no way I am checking a single thing in until we have a decent set of builds testing the most-used tier 1 platform.
Permalink | Author: Silver | Tags: Mozilla | Posted: 08:46PM on Monday, 17 July, 2006 | Comments: 0
That's It
I've had way more than enough of the fucking attitude from mozilla.org people. I am no longer going to any work on anything mozilla.org related with the exception of my continuing commitment to ChatZilla and Venkman (the JavaScript Debugger).
Have a nice day. You bitches.
Permalink | Author: Silver | Tags: Mozilla | Posted: 10:01AM on Wednesday, 23 August, 2006 | Comments: 2
NVidia: 1 point for, 427 against
Last Sunday, I decided to start playing Oblivion again. Turns out I hadn't uninstalled it from last time, so that was easy. Except for the video playback problem - this was a problem originally, clearly hadn't fixed itself, and consists of all videos (opening sequence, main menu background, etc.) to be static images from apparently uninitialised memory. Which is fun.
Begin Oblivion Video Fixing Sequence, Take 2 (I'd tried before when I first got the game).
-
Download and install latest NVidia drivers for Windows XP 64bit (91.31).
-
Run Oblivion, and find the videos work!
Well that was shockingly easy. That is the one and only point for NVidia, though.
The first and most obvious downside to updating my NVidia drivers was the new "NVidia Control Panel", which does a good job of not quite matching Explorer is every way. It's got a UI consistency you could only otherwise have found on 1995 shareware, too. Horrible.
The looks of the new control panel 'thing' are not the only problems it has, oooh no. If you're running as a Standard User Account (LUA), as everyone does (right?), it fails to save any of the application-specific 3D settings. Better than that, it looks as if they were saved when they weren't! (The Apply button disappears in a fit of horrible UI design and there's no error message at all.)
Then there is the "NVidia Display Driver Service" (nvsvc64.exe), which sits in the background doing (apparently) nothing except leaking. It was leaking Paged Pool, Non-paged Pool, Commit and Handles earlier, although currently it only seems to be leaking Non-paged Pool and Handles. The 3 memory values were leaking at a combined rate of (approximately) 1.8MB/hour, and the handles at (approximately) 1700/hour. Yummy.
Finally, we come to the actual driver itself. The main deal. Which leaks entire processes through a really bizarre bug.
For this to make sense, I'll explain a few simple facts about the Windows Kernel:
-
It has an Object Manager that tracks all objects in kernel-space and user-space.
-
All objects have a "Handle Count" and "Pointer Count" - the former is for (obviously) any open handles to the object, which is mostly for user-space code, and the latter is for kernel code that simply has a pointer (it's a reference counter).
-
When both counts reach zero, non-permanent (i.e. most) objects are removed and cleaned up.
When you start a new process, naturally there enters into existence a kernel "Process" object (along with all the shenanigans that go with that). I started the NVidia Control Panel for this test.
lkd> !process fffffadfb2fe2750 1 PROCESS fffffadfb2fe2750 SessionId: 0 Cid: 14c4 Peb: 7fffffd4000 ParentCid: 0230 DirBase: 9546c000 ObjectTable: fffffa80009c0580 HandleCount: 189. Image: nvcplui.exe VadRoot fffffadfb1996b30 Vads 202 Clone 0 Private 4739. Modified 240. Locked 0. DeviceMap fffffa800249dc10 Token fffffa80077cbcf0 ElapsedTime 00:00:48.515 UserTime 00:00:00.000 KernelTime 00:00:00.000 QuotaPoolUsage[PagedPool] 1287904 QuotaPoolUsage[NonPagedPool] 16720 Working Set Sizes (now,min,max) (8402, 50, 345) (33608KB, 200KB, 1380KB) PeakWorkingSetSize 8698 VirtualSize 657 Mb PeakVirtualSize 658 Mb PageFaultCount 15774 MemoryPriority BACKGROUND BasePriority 8 CommitCharge 5247
lkd> !object fffffadfb2fe2750 Object: fffffadfb2fe2750 Type: (fffffadfb5ab86c0) Process ObjectHeader: fffffadfb2fe2720 HandleCount: 2 PointerCount: 74
Most of the above is not too important, but the Image: and two counts from !object are - notice it starts with 2 handles and 74 pointers (2 of which will be the 2 handles). These are all constant while I look around the control panel. Then I go to the "Adjust image settings with preview" page, which has a real live 3D animation. Big mistake! Only moments after going to it, the object has:
HandleCount: 2 PointerCount: 2029
And it keeps going up, even after switching to another view! It was going up at something like 1000 pointers/second, although I don't have timestamps for my debugging log. By the time I closed the application, it was:
HandleCount: 0 PointerCount: 21516
Notice that there's no handles - nothing in user-space cares about it any more. There's still over 21,000 pointers to it in kernel-space, though. Or so the Object Manager is lead to believe. One last look at the process object in detail gives:
lkd> !process fffffadfb2fe2750 1 PROCESS fffffadfb2fe2750 SessionId: 0 Cid: 14c4 Peb: 7fffffd4000 ParentCid: 0230 DirBase: 9546c000 ObjectTable: 00000000 HandleCount: 0. Image: nvcplui.exe VadRoot 0000000000000000 Vads 0 Clone 0 Private 253. Modified 769. Locked 0. DeviceMap fffffa800249dc10 Token fffffa80077cbcf0 ElapsedTime 00:01:31.953 UserTime 00:00:11.593 KernelTime 00:00:02.734 QuotaPoolUsage[PagedPool] 0 QuotaPoolUsage[NonPagedPool] 0 Working Set Sizes (now,min,max) (6, 50, 345) (24KB, 200KB, 1380KB) PeakWorkingSetSize 11123 VirtualSize 80 Mb PeakVirtualSize 670 Mb PageFaultCount 27942 MemoryPriority BACKGROUND BasePriority 8 CommitCharge 0
Interesting points on this are that the ObjectTable, VadRoot and CommitCharge are now all zero. This means that the process' virtual address space has been cleaned up entirely. The process is not even in the session process table (list of processes for the logged in session), although it is in the overall kernel process table (which nothing in user-space can see - Task Manager can't see it).
So what's happened? Almost certainly, a driver (most likely the NVidia one, since this only happens with applications that use 3D acceleration and only since the driver upgrade) is adding a reference count to the process it is handling but not releasing it. Thus, leaking hundreds of reference counting points (there's unlikely to be any actual leaked pointers). A few of my Oblivion processes have over 3 million PointerCounts.
Excellent work, NVidia. You've managed to leak in such a special way that no-one will even notice. Except me and my wonderful friend windbg.
Permalink | Author: Silver | Tags: NVidia | Posted: 03:30AM on Friday, 01 September, 2006 | Comments: 0
XML and VCARD
<centity> <vcard> BEGIN:VCARD FN:Author EMAIL;TYPE=INTERNET:author@email.com END:VCARD </vcard> </centity>
'Nuff said.
Permalink | Author: Silver | Tags: Work, XML | Posted: 09:05PM on Monday, 18 September, 2006 | Comments: 0
Start Shortcuts
So I was bored, and reading Faux's weblog archive, and found this one on mouseless use.
That got me thinking - just how many shortcuts does Windows have, that most people don't know? I'd wager it's more than you think.
The most well-known set are <Win> plus a letter. So here's the list for Windows XP Professional x64:
-
<Win> - Start menu
-
<Win>+B - Focus Shell Notification Area
-
<Win>+D - Show Desktop (toggle)
-
<Win>+E - Open Explorer
-
<Win>+F - Open Find for Files
-
<Win>+<Control>+F - Open Find for Computers
-
<Win>+L - Lock Workstation
-
<Win>+M - Minimise all windows (<Win>+<Shift>+M to undo)
-
<Win>+R - Run dialog
-
<Win>+U - Run Utility Manager (accessibility stuff lies this way)
<Win>+B took me by surprise, so I figure not everyone knows all of the above list, however common some of them are.
The others, people only seem to know a few, and I suspect there will be at least one new one here for everyone.
-
<Win>+F1 - Open Help and Support Center
-
<Win>+<Break> - System Properties
-
<Win>+<Tab> - Focus and select taskbar programs (try this - you'll like it)
-
<Control>+D - Delete in Explorer
-
<Control>+<Esc> - Start menu for luser keyboards
-
<Control>+<Shift>+<Esc> - Task Manager
-
<Shift>+<Menu> - Extra context items (like Run As and Open With)
-
<Shift>+F10 - Context menu (<Shift>+<Menu> for luser keyboards)
-
<Shift>+[No] on Explorer dialogs - No to all
Those are all the ones I can remember and/or find right now. I am certain that there are more, but they will have to be documented another day.
The reason for all this was because Faux's description of using <Win>+D then <Tab> to get to the start menu button seemed excessive, and has the side-effect of minimising all running programs. <Win>, <Esc> is much easier to focus the button, but for what he's suggesting, you just need to hit <Win> and use the arrow keys. Or, if you want to play with your open applications, <Win>, <Esc> then <Tab> to the taskbar, though I prefer <Win>+<Tab> to do that directly.
Now if only my weblog had a shortcut for [Post]...
Permalink | Author: Silver | Tags: Windows | Posted: 03:26PM on Saturday, 30 September, 2006 | Comments: 2
Fast User Switching, the Welcome Screen and <Control>+<Alt>+<Delete>
First of all, let's start with a brief explanation of Windows' multi-layered sand-boxing and separation of logins and the user's desktop.
The basic structure is thus:
-
Windows kernel and Object Manager
-
"Sessions"
-
Window Stations
-
Desktops
-
Your desktop 'n' stuff.
I.e. the kernel can maintain any number of "sessions", all of which can have any number of window stations, all of which can have any number of desktops, all of which can have, well, the windows themselves.
Certain things are sand-boxed at different levels. Named kernel objects (e.g. events, critical sections, etc.) are stored in a session-specific location. Atoms and the clipboard, for example, are part of the Window Station, where as hooks are part of the Desktop. You can only send messages between processes with the same desktop, too.
All the sessions use the same setup:
-
WinSta0 (Window Station)
-
Winlogon (Desktop) AKA "secure desktop"
-
Default (Desktop)
The login screen, locked dialog and <Control>+<Alt>+<Delete> dialog all run in WinSta0\Winlogon. All your applications run in WinSta0\Default.
It should be noted that applications can create their own Window Stations and Desktops; indeed, my main system currently has 5 extra Window Stations (created by services, like Task Scheduler).
Windows NT and 2000
With Windows NT and 2000, things were simple. Session 0 was the one and only local "interactive" session (the one attached to the physical display device, physical input devices, etc.). Remote Desktop created other sessions for each remote login, as you might expect.
Windows XP
With Windows XP, two things were done to make life easier for the home user - Fast User Switching, and the Welcome Screen.
As you might have guessed, Fast User Switching utilises the "sessions" layer, allowing completely isolated user sessions. Adding this local disconnect/connection required enough work on the session system for an entire book, but it's not relevant here - what is, though, is that any session may be connected to the local physical devices.
Now that the system can do this magic, a UI is needed. Enter the Welcome Screen. The Welcome Screen (logonui.exe) runs in the secure desktop (WinSta0\Winlogon) when necessary, such as when a user logs off or locks the computer. It is interesting to note that the actual process is started by these events and does not run all the time.
-
Initial system
-
Active desktop: \Sessions\0\WinSta0\Winlogon
-
Welcome Screen running. No user's logged in.
-
Initial login
-
Active desktop: \Sessions\0\WinSta0\Default
-
No secure desktop processes.
At this point, I will point out that Start > Log off > Switch Users does exactly the same thing as <Win>+L (Lock).
-
Locking initial login
-
Active desktop: \Sessions\0\WinSta0\Winlogon
-
Welcome Screen running. One user logged in.
-
Second login
-
Active desktop: \Sessions\1\WinSta0\Default
-
Welcome Screen creates new session and connects local system to it. No secure desktop processes afterwards.
-
Locking second login
-
Active desktop: \Sessions\1\WinSta0\Winlogon
-
Welcome Screen running. Two users logged in.
This is where things get more interesting. The Welcome Screen can unlock either session, but is currently still connected to the second login. This has a bearing on, for example, sound - which is still connected, so your music will keep playing when you lock the computer (as it always has done). If you unlock the initial login, however, it will be disconnected.
-
Unlock initial login
-
Active desktop: \Sessions\0\WinSta0\Default
-
Welcome Screen connects to session 0, and unlocks. No secure desktop processes afterwards.
Just for fun, you can also disconnect the local session (from Task Manager, f.e.), which starts a new session just for the Welcome Screen:
-
Disconnect local session
-
Active desktop: \Sessions\2\WinSta0\Winlogon
-
Welcome Screen running. Two users logged in.
There are two UI points that change other than the login screen:
-
Security (<Control>+<Alt>+<Delete>) d
|