Smart Install Instructions

Today as I was setting up a mysql GUI I saw this:
Screenshot of the user friendly install instructions

It made me very happy to see that part about Ejecting and ridding yourself of the installer because a lot of folks still might not know that. I’ve definitely met some people who drag firefox to their dock from the installer instead of copying it to their Applications folder. Every time they open the application from the dock, the installer has to mount and someday down the line they might delete it and then not know why the application no longer launches from the dock. OS X just gives the ever so helpful “?” and the user is left to wonder what happened. That far down the line – it’s not so apparent that they should have dragged to the Application folder and ejected the installer.

Most Mac installers these days do make it quite clear that you should drag to your install folder and I would love to see them add this tip too – just to help folks finish what they start.

Upcoming Source Server Demos

This is mostly a reminder for me, but if anyone is interested in seeing how the Source Server is working/coming along, my demos are scheduled for:

  • Thursday March 13th at 1:30pm in ORI
  • Thursday April 3rd at 1:30pm in ORI

The first demo should involve the symbolstore.py patch having been committed, there should be a debug build that can be downloaded and attached to VStudio and/or WinDBG where the source code is then pulled via the Source Server.

The second demo will hopefully be a look at a reverse engineered pdbstr.exe – something that can read and write to pdb files the source indexing data block.

Now on Windows

Using StraceNT I was able to get this output.

Here’s a snippet:

IntellectualHeaven (R) System Call Tracer for NT, 2K, XP, 2K3.
Copyright (C) Pankaj Garg. All rights reserved.

Tracing command: [“pdbstr” -r -p:accessiblemarshal.pdb -i:am3.stream -s:srcsrv]
[T3600] TlsGetValue(1, 0, 2bfef8, 182020, …) = 2c7778
[T3600] EnterCriticalSection(77c61b30, 2c7778, 2bfed0, 77c3a03b, …) = 0
[T3600] LeaveCriticalSection(77c61b30, 2bfed0, 77c3a0fa, d, …) = 0
[T3600] EnterCriticalSection(77c61b18, 2c7778, 2bfed0, 77c3a06c, …) = 0
[T3600] LeaveCriticalSection(77c61b18, 2bfed0, 77c3a108, c, …) = 0
[T3600] HeapFree(2c0000, 0, 2c7778, 0, …) = 1
[T3600] TlsSetValue(1, 0, 0, 2bfef8, …) = 1
[T2556] LeaveCriticalSection(2c1fdc, 6f1c0, 77c2d154, 4, …) = 0
[T2556] LeaveCriticalSection(2c7718, 6f1d8, 77c3b967, 13, …) = 0
[T2556] HeapFree(2c0000, 0, 2caa48, 1058d24, …) = 1

The results are certainly a bit clearer looking than the Linux/Wine results. I am still clueless however to the deeper meaning. I’ve been told I need to talk to timeless on IRC, that he is the one with major knowledge on reverse engineering.

This is turning into quite the rabbit hole.