Scott Hanselman

An Error occured during the installation of assembly component - 98cb24ad-52fb-db5f-a01f-c8b3b9a1e18e

September 19, 2006 Comment on this post [2] Posted in Musings
Sponsored By

This is a lousy error message for a number of reasons:

An Error occurred during the installation of assembly component - 98cb24ad-52fb-db5f-a01f-c8b3b9a1e18e

  • It doesn't tell me the file name.
  • It gives me a GUID that sends me into the registry looking for COM stuff only to find nothing
  • It uses the word "assembly" that implies .NET and sends me into the GAC only to find nothing

Instead this is an error from deep in the underbelly of Windows in a section that dare not speaks its name - Side-By-Side or WinSXS.

This says that something horribly wrong while installing the VC++ 8.0 C Runtime into the WinSXS 'subsystem' folder under C:\windows.

I'm getting this error while installing TortoiseSVN4 on a Windows Vista RC1 machine. This is what my WORKING system looks like:

Winsxs

This is the non-working system:

Winsxs1

Now I'm not sure what to do. No one is allowed to install files into c:\windows\winsxs\manifests except the TrustedInstaller user...not even Administrator. Je suis screwed.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

Downloading Audible Content under Vista using IE7 in Protected Mode

September 19, 2006 Comment on this post [3] Posted in Musings
Sponsored By

PbkI just hate Googling for stuff that SHOULD be out there (given the keywords I chose) and finding nothing. SURELY I'm not the first guy to try to download an Audible book under Vista RC1 using IE7 in Protected Mode (its default mode.) Well, it doesn't work.

I was trying to download the audio book for John Hodgeman's "The Areas of my Expertise" today - the first book since the Vista upgrade (free excerpts here).

When Audible downloads audiobooks into iTunes, it uses a helper creatively called ADHELPER.EXE that grabs a specific extension registered to it and without prompting, downloads the file into the Temporary Internet Files then moves that file over to your iTunes Library and adds it. It's usually a VERY simple one-click process. Except today, using Filemon from Sysinternals I noticed that IE7 and ADHELPER are fighting over the downloaded file and a Sharing Violation is happening.

I'm not sure if this is a bug in ADHELPER fo grabbing into Temporary Internet Files so quickly, or if it's a bug in IE7 for doing something different than it did before, but it's broken now.

(ASIDE: I just realized that my Harmony Remote Control does similar things with a small application registered for a custom extension...I should test that too...)

Solution for downloading Audible content into iTunes on Vista RC1? Use Firefox, works great.

Hodgeman is a nut. He's the "PC" in the "I'm a Mac, I'm a PC" ads. He also has notably collected illustrations of 700 Hobos. The book should be hilarious.

 

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

MbUnit - Unit Testing on Crack

September 19, 2006 Comment on this post [15] Posted in Reviews
Sponsored By

MbUnit is a "better xUnit" that's used by a myraid of folks I respect, including James Avery, Patrick Cauldwell and Phil Haack. It's under very active development, even though I'd once wondered aloud if it was "abandonware." It's decidedly not and it's just got a new facelift to prove it.

Check out James Avery's Post called "I've seen the light and it is called MbUnitr."  I've asked around and everyone has nothing but nice things to say what MbUnit brings to the table. It's NOT just NUnit with some tweaks. James says it's "Unit testing on crack."

Check this out...the test will get called four times, each time with different values passed in, some intending to cause and exception and others not. Very clean and certainly nicer than making a dozen methods like "NegativeTest54".

    1 [RowTest]

    2 [Row("James", "myemail@email.com")]

    3 [Row("James", "", ExpectedException=typeof(InvalidUserException))]

    4 [Row("", "myemail@emai.com", ExpectedException = typeof(InvalidUserException))]

    5 [Row("James", "mybademail.com", ExpectedException = typeof(InvalidUserException))]

    6 public void AddValidUser(string name, string email)

    7 {

    8     User u = new User();

    9     u.Name = name;

   10     u.Email = email;

   11 

   12     u.Save();

   13 

   14     User newUser = User.Retrieve(u.ID);

   15     Assert.IsNotNull(newUser, "User not found");

   16     Assert.IsTrue(newUser.Name == u.Name, "Name not saved correctly");

   17     Assert.IsTrue(newUser.Email == newUser.Email, "Email not saved correctly");

   18 }

 

It's even got a feature that will rollback database changes, keeping your database fresh after each test run. Sweet. I gotta do a show on Trends in Unit Testing...

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

Vista Reliability and my Tolerance for Pain

September 18, 2006 Comment on this post [31] Posted in Reviews
Sponsored By

VistareliabilityUPDATE: My bluescreens, while they appear to be in Win32k.sys, are actually in ATI's ati2evxx.exe. It's apparently the most common blue screen in RC1. Those naughty device drviers! Fortunately, it's been fixed in the latest ATI driver coming soon to a Windows Update near you. If this BSOD stops with this new build then my reliability numbers will go up greatly! Things are looking up.

Crap crap crap. My totally-stable-for-four-years machine is now blue screening daily under Vista. This is getting irritating.

Disclaimer: I'm pissed, so I'm blogging in frustration. I'm still stoked about Vista, I'm just not stoked about the new computer I'm going to have to buy if I can't get this one to work.

Notice my declining stability in the Reliability and Performance Monitor in the image at right? This isn't looking good and it's only been 10 days. Sigh. That's what I get for being an early adopter of RC1 Beta4.

This is very frustrating.  My guts tells me that this is a race condition in the menu handler of Win32k.sys, but that was supposed to have been fixed year ago.

I don't like being afraid of my own machine.

Stuff doesn't work anymore that I love:

  • FinePrint - The printing subsystem has totally changed. Perhaps I need to reinstall?
  • Canon PIXMA MP500 - I'm unable to share this printer to any other machines in the house.
  • 200 GIG Firewire - My WDC 200GIG Firewire just disappears. sbp2port.sys says, huh? Then the drive is gone for hours. Then, later, it'll show up.
  • 200 GIG USB - My Maxtor 200GIG USB plugs into my main USB2 Root Hub and Vista proclaims "Your Unknown Devices is ready to be used." It works plugged into my Dell Monitor (which is recognized as "Generic PnP Monitor" by the way.
  • Video - Flash Videos don't play. Well, that's not true, they start, play 5 seconds, and then stop, never to start again. Windows Media Player (WMV, MPG, AVI) videos only play on the Primary Monitor. On the secondary monitor they play at 5fps. Same with Media Center. It's totally unusable on the second monitor.
  • Nero - Nero doesn't work, but to Vista's credit, it did warn me ahead of time, so I uninstalled it.
  • IE7 - It keep getting into a state where the Menu Bar is showing, and I can't click in the address bar. I click in the bar and it flashes like it WANTS to select itself, then the Menu Bar flashes, then I'm left with focus on the page. I'm unable to navigate unless I Ctrl-O to get to a new page.
  • IOMEGA REV Drive - Looks like a regular CDR and the system tries to format it like one and chaos ensues. The drive - my primary backup media - is useless under Vista so far. Here's a screenshot about how much Iomega cares. Even kinder support from their "Gurus" on their forums. Here's what their moderator said: "We currently do not have any released drivers for Windows Vista, It is still unclear if we will need to release new drivers when Vista is finished. At this time we do not have any support for beta versions of Windows Vista. However apon official release of Vista you can expect any driver updates assuming they are required."
    Hm, this milk is bad. Maybe it'll be better later!
    Norevdriveonvista
  • Virtual PC - There's a known problem with the Network Drivers for VPC under Vista, but the supposed solution of just reinstalling those drivers from the Network Control Panel succeeds, then Virtual PC doesn't work anyway.
  • Windows Defender - Literally 75% of the items in my startup are marked "Not yet classified" and I have no way in the Defender UI to give it the equivalent of the "chill" command.
  • Windows Security - The security control panel insists that I have no Anti-Virus software even though eTrust has been running on my system for 4 years and was recognized under XP.
  • Aero - Programs here and there will cause a scary, heart-stopping black screen and monitor flicker as the entire system switches into Basic Mode because one program can't handle Aero (I smell a Windows Theming Denial of Service Attack here somewhere) and then gets stuck in Basic Mode long after the offending app has left.
  • Diskeeper - The greatest defragmenter ever just disappears every once in a while. Poof. Not sure what it was working on at the time, or if that file was important.
  • Windows Backup/Image Backup - I started getting concerned, so I tried to backup my stuff. First I did a Windows Image Backup and that ended up on I:\WindowsImageBackup\scottpc\Backup 2006-09-18 082147. Then I wanted to just backup some music files. Not only couldn't I select just those directories, but the system insists on backing up my C: Drive again, except this time it's to I:\SCOTTPC\Backup Set 2006-09-18 215943. Note the directory is one up now. Apparently I can't have both file backups and image backups on the same drive without this confusion. One other interesting note, the system teases me with the .VHD extension it puts on the Image Backups, but I suspect it's not a Virtual PC Hard Drive.
    Here's a fun little screenshot as the backup fails:
    Randomvistaerror1
  • TrueCrypt - Kind of works. You have to right click on the actual EXE itself (not the Start Menu Link) and "Run as Administrator." Not sure why the User Access Control just requires another click, rather than entering one's password again.
  • Microsoft Intellitype Keyboard and Mouse - Um, wha? You'd think that support for every Microsoft Keyboard and Mouse would be built in, but nope. Both these had to go before I installed. For some reason now my USB keyboard doesn't work in the text-based Vista pre-boot screens though it worked in the Windows XP pre-boot (F8) screens.

Why doesn't the team just come to my house and hang out? Am I just really, seriously, using computers in a way that isn't appropriate or is not supported? Should pave this machine? I really don't think so.

Eh, it's beta. What can you do? Vista, why has thou forsaken me?


Feel free to WinDBG.exe around if you like that kind of thing:

File Attachment: vistabugcheckwindbganalysis1.txt (5 KB)

File Attachment: Mini091806-01.dmp (136 KB) (it's NOT a zip, just change the extension to .dmp)

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

Preventing Dialogs on the Server-Side in ASP.NET or Trace.Fail considered Harmful

September 18, 2006 Comment on this post [4] Posted in ASP.NET
Sponsored By

Dialogs on the server-side? What is this nonsense of which you speak? Are you insane? Sadly no.

Back in the day, if you ran a VB6 COM DLL under Classic ASP, or as I like to call it "Poopy-SP," and you forgot to set "Unattended Execution" and "Retain in Memory" you could get yourself into a pickle if an error in the application caused a dialogbox or messagebox to pop up on the Server-side, just waiting for some poor schmuck to click "OK."

Recently I got an email that a high-powered blogger was seeing Dialog Boxes on his hosted instance of DasBlog while running under ASP.NET 2.0. These dialogs would hang the thread they were on, and hang IIS until they were dismissed. Shocked he and I were to say the least as "that ain't supposed to happen."

I suggested that he disable JIT Debugging in his registry. He tried it and indicated that he was getting a full stack trace inside the message box. Since the JIT Debugging Dialog doesn't look like that, I figured that wasn't the problem.

I spoke to some folks at MSFT who said that if there were unhandled exceptions being thrown from DasBlog, how they'd be presented would be controlled via the legacyUnhandledExceptionPolicy setting in his web.config like this (we don't have any unhandled exceptions, BTW, there's 'global' exception handlers in two places):

<configuration>
  <runtime>
    <legacyUnhandledExceptionPolicy enabled="true" />
  </runtime>
</configuration>

This tells the CLR to act more like .NET 1.1 in this respect as the behavior for unhandled exceptions has changed in 2.0 (MSDN Mag Article here and MSDN Topic here).

This "solution" smelled fishy to me, didn't seem like a good idea, and ultimately didn't solve his problem.

He then indicated that he was seeing errors in our SharedBasePageErrorHandler, which made sense to me as we handle all Page-level exceptions there.

private void SharedBasePageErrorHandler(object sender, EventArgs e )
{
    Exception pageException = Server.GetLastError();
    try
    {
        loggingService.AddEvent(
            new EventDataItem(EventCodes.Error,
            pageException.ToString().Replace("\n","<br>"),
            this.Page.Request.Url.ToString()));
        System.Diagnostics.Trace.Fail(this.Context.Error.Message);
    }
    catch
    {
    }
}

Seems pretty straightforward, and his stuff WAS getting logged indicating that the LoggingService.AddEvent was working fine.

What about this System.Diagnostics.Trace.Fail call, though? Seems harmless, but it's the only other thing in there and it would explain where the stack trace was coming from - it's inside of this.Context.Error.Message.

There was a problem back in the day with Trace.Fail or Debug.Fail locking up the ASP.NET Worker Process.

If you reflector into the implementation of the DefaultTraceListener in the .NET Framework you'll see a call to AssertWrapper.ShowAssert (that should only happen if AssertUIEnabled is true and UI Permissions are available.) That must be the case in our blogger friend's situation.

public override void Fail(string message, string detailMessage)
{
      string text1;
      StackTrace trace1 = new StackTrace(true);
      int num1 = 0;
      bool flag1 = DefaultTraceListener.UiPermission;
      try
      {
            text1 = this.StackTraceToString(trace1, num1, trace1.FrameCount - 1);
      }
      catch
      {
            text1 = "";
      }
      this.WriteAssert(text1, message, detailMessage);
      if (this.AssertUiEnabled && flag1)
      {
            AssertWrapper.ShowAssert(text1, trace1.GetFrame(num1), message, detailMessage);
      }
}

Assuming those things are true and ShowAssert does get called, interally the AssertWrapper.ShowAssert calls SafeNativeMethods.MessageBox only if the user is in an interactive mode. It's possible that MB_SERVICE_NOTIFICATION isn't being passed into the MessageBox indicating that it's a non-interactive service who is throwing the box.

Setting this option in the web.config (or machine.config) works around the issue by not even getting into AssertWrapper.

<configuration>
   <system.diagnostics>
      <assert assertuienabled="false" logfilename="c:\log.txt"/>
   </system.diagnostics>
</configuration>

This looks like a bug in ASP.NET 2.0, but we'll see.

The workarounds are:

  • Don't use Trace.Fail()

or

  • Set AssertUIEnabled="false" in your web.config.

The strange part about this is why it's seen on some systems and not others.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.