Wednesday, April 27, 2011

Broken drivers

Lenovo finally posted an updated driver - version 267.21 - for the Nvidia NVS 3100M chipset in my ThinkPad T510. Unfortunately after installing it I was greeted with strange, but horrible, colour banding. Do they test these things? I also tried 270.61 from nVidia - which actually supports my laptop for a change - but alas, the same obvious problem was present. I reverted to version 260.63, which works fine.

Lenovo also posted an updated Intel Wi-Fi driver, version 14.0.1. This one gave me BSODs, I think when entering sleep mode. Back I went to the official Intel version, 13.5.0, which seems to works fine.

And let's not forget the Bluetooth drivers which wipe your hard drive when upgrading/uninstalling them. The only warning you get from Lenovo is a tiny "Please back up your important data before running the update." I have not bothered to remove them....

Sunday, March 13, 2011

Adobe Reader X 10.0.1: bugged

Hi Adobe,

You might want to do a better job testing your software before releasing it.

I was happily reading a PDF document when I wondered why the taskbar clock was where the start button should be. Also, Adobe Reader had rendering glitches everywhere. Recognising the symptoms, I fired up task manager:



Yes - Adobe Reader X 10.0.1 has a large GDI-resource leak bug. This happens when the semi-transparent light blue search box overlay is visible. If you are in select mode, a chunk of resources will be leaked every time the text cursor flashes. Otherwise, just scrolling around will leak a chunk of resources. Eventually you will reach the default 10k limit. Lovely. Eventually my taskbar responding.

Monday, February 28, 2011

Some never learn

I downloaded the Dragon Age II PC demo, to find that mouse wheel support is broken - a familiar tale. (Specifically, support for freely rotating mouse wheels with non-120-multiple wheel rotation values). Ho-hum.

Sunday, February 27, 2011

Careful with SHAutoComplete

If you call it with a NULL HWND, it will return E_INVALIDARG but leak six GDI handles (seen under Windows 7 SP1).

Yes, you can blame the caller, but 'tis just something to note.

Tuesday, July 13, 2010

Thoughts of the day

1. Surely a (laptop) recovery DVD that depends on the original storage drive partition layout to be (loosely) intact is a complete fail? I'm looking at you, Acer.

2.Some people might call that a memory leak, Notepad++. I'll try version 5.7: let's hope it's better even if it doesn't make any specific promises about this.

3. The hot fix for the Windows 7 erroneous file is corrupt nonsense was finally released a few weeks ago.

4. Some questions on notification icons (tested on Windows 7):
  • When pressing Enter on a focused notification icon, why are two NIN_KEYSELECT notifications sent to the associated application? (i.e. when using Windows 2000 or newer behaviour), Space was OK, as I remember.
  • In the main notification icon area, why are WM_XBUTTONDOWN/WM_XBUTTONUP notifications sent when the 'X' buttons are pressed over another icon?
5. Why do PC modern games still have problems with freely rotating mouse wheels (with non-120-multiple wheel rotation values)? I'm looking at you, Dragon Age. Even worse is to not bother fixing it.

Friday, June 11, 2010

Microsoft SAPI text-to-speech fun

It seems to fail at resampling. I tested on Windows 7 with the stock Microsoft Anna voice; you probably won't notice unless you use an alternative output (e.g. write to file) and specify a non-native sample rate (I suppose most people don't do that).

Handily I was in the context of a foobar2000 component, so I was able to make SAPI output to memory at the native sample rate and use FB2K's resampler.

Here are some samples (native 16kHz, SAPI-resampled 22kHz, FB2K-resampled 22kHz). Feel free to share any insight in the comments...

Sunday, May 30, 2010

Letter of rage

Dear Broadcom WIDCOMM Bluetooth Software 6.2.1.2100 installer,

Thank you for deleting every file you had access to on my system volume. There's nothing like seeing random icons disappear from your desktop one-by-one. It's a shame you left all my other drives alone, but one can't have everything.

Yours sincerely,

Anonymous fan

Update: Ah, came across another report - so the problem has been known (with earlier versions!) for at least a month. Great...

Sunday, May 23, 2010

Web host fun

So my web host blocked my IP address from the server my web site is hosted on... and are denying it/are uninterested in doing anything about it. Seems like I tripped some "security" measure trying to edit a large wiki page.

So off I go to find a new host... which is always a fun process. Wish me luck.

Wednesday, February 10, 2010

Attn: UPEK

As I know the nice person(s) at UPEK like to take notice of things posted here, I thought I'd write about a couple of new problems I had with Protector Suite / my fingerprint reader under Windows 7.

1. A new error message appeared today; it was hiding under all other windows so it went unnoticed for a while:

First time I've seen that one, so not an often occurrence.

2. Sometimes after resuming from sleep, my fingerprint reader doesn't function (no feedback when swiping). If I try to restart the Windows Biometric Service, it times-out or something, though after a while things work again.

Perhaps the below message logged by Windows will help. There's also something for the Windows Biometric Service from when I tried to restart it, that's under Bucket ID 1376951512.
Source
Windows Driver Foundation - User-mode Driver Framework Host Process

Summary
Driver host process timeout.

Date
‎02/‎02/‎2010 8:40 AM

Status
Report sent

Description
The Windows User-Mode Driver Framework detected that a driver host-process did not complete a critical operation within the allowed timeout period.
This report contains information about the process and the drivers running within and will be used to improve the quality of these drivers.

Problem signature
Problem Event Name: WUDFHostProblem
EventClass: HostProblem
Problem: HostTimeout
DetectedBy: 2
UMDFVersion: 6.1.7600.16385. (win7_rtm.090713-1255)
ExitCode: 103
Operation: 0
Message: 6
Status: ffffffff
HardwareId: USB\VID_147E&PID_2016&REV_0001
OS Version: 6.1.7600.2.0.0.256.1
Locale ID: 2057

Extra information about the problem
Bucket ID: 4
That's with driver version 1.3.0.214, the latest version available for download at time of writing.

Tuesday, January 26, 2010

Failure at using COM/OLE: Part 2

Last time we just touched on a small issue, as a precursor to the important one.

Consider an application that populates an STGMEDIUM structure as follows:
  • Sets tymed to TYMED_ISTREAM
  • Sets pstm to a pointer to an IStream object
  • Sets pUnkForRelease as a pointer to the IUnknown interface of the same IStream object
  • This IStream object has a reference count of 1.
What's wrong? Let's read the documentation for ReleaseStgMedium:
When the original provider of the medium is responsible for freeing the medium, the provider calls ReleaseStgMedium, specifying the medium and the appropriate IUnknown pointer as the punkForRelease structure member. Depending on the type of storage medium being freed, one of the following actions is taken, followed by a call to the IUnknown::Release method on the specified IUnknown pointer.

Medium





ReleaseStgMedium Action
TYMED_ISTREAM





Calls IStream::Release.
(My emphasis, irrelevant parts of table omitted)

In other words, calling ReleaseStgMedium on that STGMEDIUM structure will end up in the IStream object being released twice, and unsurprisingly things like to blow up the second time.

Sad thing is it didn't really take much time to look up the problem - all of 30 seconds once I found out that freeing TYMED_ISTREAM STGMEDIUMs was the issue. You'd better allocate more time for "convincing person X that the problem exists".

Wednesday, January 20, 2010

Windows 7: SATA controller in AHCI mode and standby issues

I recently decided to switch my SATA controller into AHCI mode. With this information that was easy enough.

What followed though were "BSODs"/stop errors, mainly on resuming from standby. Sadly, minidumps weren't created for these - but the errors were either KERNEL_STACK_INPAGE_ERROR or KERNEL_DATA_INPAGE_ERROR (I didn't note which). Additionally, some applications crashed when resuming from standby with exception code C0000006 (STATUS_IN_PAGE_ERROR).

The problem apparently was KB977178 - "You receive various Stop error messages in Windows 7 or in Windows Server 2008 R2 when you try to resume a computer that has a large SATA hard disk". I noted that it only appears to update the Microsoft AHCI driver.

I have a large page file on another large non-system drive (and a small one on my system drive), so it fits the problem description (no access to the large page file until the drive spun up causing the errors). Indeed, after installing the hot fix the problem stopped.

So, just a hint in case anyone else runs into the same unfortunate issue..

Windows 7 NTFS worry...

Out of the blue, my Windows 7 install decided to run chkdsk on my system drive on startup (once). It didn't find any problems.

A little bit more digging revealed Ntfs event number 55 had been logged last time the computer was on:
"The file system structure on the disk is corrupt and unusable. Please run the chkdsk utility on the volume [volume name]."

Obviously a little bit worrying. Since chkdsk didn't find anything actually wrong, I did a little bit of stress testing to double check for any stability issues - but those seemed fine. The drive in question is a Samsung SLC SSD, again no real sign of any issues there - S.M.A.R.T. data is OK, and actually the normalised wear-levelling attribute is still at 99 (!).

So I decided to leave it at that and wait to see if it reoccurs. (Actually, I decided to switch my SATA controller into AHCI mode which unleashed some separate problems, but I'll write about those separately).

Occur again it did - several days later. This time I caught the message in the event log before I shut down the computer. Indeed I checked the dirty flag of the volume, and it was set. Similarly, chkdsk wasn't flagging up anything as wrong.

Seemed to me that something must have changed recently to start triggering this. There were a few things I could think of, but I simply disabled the real-time protection of my anti-virus (MSE "Ongoing Beta"). Some weeks later and it hasn't reoccurred - but that may well be a coincidence. Not sure what to make of it, but I will have to continue to monitor it..

Update: The Windows photo importing functionality seems to be something that likes to trigger this (see comments). Still investigating whether MSE is relevant or not.

Update: It likes to happen when importing the photos but not always reliably. So far it has only happened with MSE real-time protection enabled. The photo importer is set to import to the "My Pictures" folder, and also picture 'streaming' is enabled. You might also get the dreaded "The file or directory is corrupted and unreadable" message as well. I will also add that I tested on Windows 7 64-bit.

Looks like an OS bug anyway, I don't see why anti-virus should cause this type of error.

Some relevant links:
http://groups.google.com/group/tortoisesvn/browse_thread/thread/69f3e36e6bbf7389?pli=1 (note the post title, easy to miss..)
http://social.technet.microsoft.com/Forums/en/w7itprogeneral/thread/6c3ed415-704b-482d-a20b-69277f6cd4ad (my god there are some idiotic replies)

First one seems interesting, some issue with file locks according to it.

Update: A statement from a Microsoft employee from the TechNet forums:
"This is a known regression in Windows 7 in the NTFS file system. It occurs when doing a superceding rename over a file that has an atomic oplock on it (atomic oplocks are a new feature in Windows 7). The indexer uses atomic oplocks which is why it helped when you disabled the indexer. Explorer also uses atomic oplocks which is why you are still seeing the issue. When this occurs STATUS_FILE_CORRUPT is incorrectly returned and the volume is marked "dirty" which is a signal to the system that chkdsk needs to be run. No actual corruption has occured.

Neal Christiansen
NTFS Development Lead"

Wednesday, January 13, 2010

People's failures at using COM

What does MSDN say about the ppvObject parameter in IUnknown::QueryInterface?
ppvObject [out]

The address of a pointer variable that receives the interface pointer requested in the riid parameter. Upon successful return, *ppvObject contains the requested interface pointer to the object. If the object does not support the interface, *ppvObject is set to NULL.

I made the relevant bit a bit more prominent.

We now have the following code, written by X:
#define COM_QI_BEGIN() HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid,void ** ppvObject) { if (ppvObject == NULL) return E_INVALIDARG;
#define COM_QI_ENTRY(IWhat) { if (iid == IID_##IWhat) {IWhat * temp = this; temp->AddRef(); * ppvObject = temp; return S_OK;} }
#define COM_QI_END() return E_NOINTERFACE; }

COM_QI_BEGIN()
COM_QI_ENTRY(IUnknown)
COM_QI_ENTRY(IDataObject)
COM_QI_END()
This expands to:
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid,void ** ppvObject)
{
if (ppvObject == NULL) return E_INVALIDARG;
{ if (iid == IID_IUnknown) {
IUnknown * temp = this; temp->AddRef(); * ppvObject = temp; return S_OK;} }
{ if (iid == IID_IDataObject) {
IDataObject * temp = this; temp->AddRef(); * ppvObject = temp; return S_OK;} }
return E_NOINTERFACE;
}

Does that look like it sets *ppvObject to NULL on failure?

More on the general subject here.

Monday, December 21, 2009

Mr User Friendly returns

As does Mr Screen Shot...

(If you're wondering, the problem was just that I had the destination file open in a certain application..)

Sunday, November 29, 2009

UPEK Protector Suite strikes again

I thought (or perhaps naively hoped) UPEK had fixed all their issues. Alas, I was to be disappointed on a large scale as you can see below.


I admit, it's not a regular occurrence, but once is more than enough..

I'll try Authentec next time..

ITaskbarList3::ThumbBarUpdateButtons complaint again

I'm going to complain about it again (first time). I recently saw a crash log where the user had right-clicked on our application's notification area icon around the same time as my call to ThumbBarUpdateButtons - the result was a modal TrackPopupMenu call within the ThumbBarUpdateButtons call.. !!

What a complete mess - so make sure you only call ThumbBarUpdateButtons from a posted message/equivalent specifically for that purpose (at least in Windows 7 RTM). Unless you like strange (though rare) crashes, and the possibility thumb buttons being in the wrong state..

Tuesday, September 01, 2009

Windows 7 RTM feedback...

I decided to go ahead and buy a TechNet subscription so I could "evaluate" Windows 7, and am now running Windows 7 RTM on both of my computers. One was an upgrade from Windows Vista 64-bit, the other was a (sneaky) forced upgrade from Windows 7 RC.

In the spirit of "evaluating" Windows 7, I thought I might post some of the issues/problems I have encountered in the RTM version:
  • The upgrade process reset the date modified attribute for all the directories in my user folder. That was one of my favourite things to sort by, so definitely an annoyance.
  • The installer asked me to remove Avira AntiVirus which wasn't actually installed anymore. It was in fact complaining about some old left over driver which I had to manually remove - but how they expect the average user to work that out I don't know.
  • I had a printer shared on the Windows Vista installation. I had renamed the share (to change a space to an underscore, because I was trying to make it accessible from another Mac OS X computer). After upgrading from Vista to 7, the share was still there but it didn't actually work anymore. In Devices and Printers, the printer wasn't marked as shared so I had to share it again. Unsurprisingly, I couldn't use the old share name. I am now left with two printer shares, one of which doesn't work. I thought I would try and remove the dead share using the "net share" CLI command, but I just get: "System error 1801 has occurred. The printer name is invalid." Lovely.
  • This one was on the machine I did the naughty upgrade from Win 7 RC on, but I can't say if that was related to the problem or not. I had .NET Framework 4 beta 1 installed on Win 7 RC, after upgrading to Win 7 RTM I ended up with a broken .NET Framework installation. The solution here was to uninstall .NET Framework 4 and then reinstall it.
  • When dragging an object from an external application (say foobar2000) Windows Explorer windows no longer automatically scrolls when you are near the edges of the items area.
  • When dragging an item over an empty area of the task bar, it no longer shows the desktop automatically. This is probably due to the fact that you can now pin items to the task bar - my view though is that it could very well do both. You can now go over to the show desktop button, but that is all the way in the bottom right corner..
  • This is definitely annoying, it happens on my desktop with a WUXGA monitor. Since it is reported on both AMD ATI and nVidia graphics cards, I'm reluctant to blame the graphics card driver (which is the latest version).
  • When connecting say an SD Card, it doesn't prompt you to view the files or do something with it. I think they have changed this in Vista now also. There is probably some way to change this, I will have to have a look, but generally I want to look at the photos or something when I put in the card from my camera..
  • I wrote about it before, but the removal of the columns header in the Windows Explorer views other than Details is a major step backwards. You now can't at a glance see the current sort order. Sorting by the reverse order of another criteria now takes a lot more work.
  • I wrote about this before, but I still think the Show Desktop icon should be near the bottom left of the screen. The desktop icons are usually on the left of the screen, and also I like liked to blindly click in the bottom right to view the calendar.
  • Amazingly, the Windows Photo Viewer doesn't handle smooth (Microsoft) mouse wheels correctly. It falls into the category "doesn't react unless you scroll the wheel exceptionally fast", and the bug I believe is a is a carry over from Windows Vista. My post on WM_MOUSEWHEEL failings is currently the fourth result on Google.com for "WM_MOUSEWHEEL", so hopefully I've made the world a better place regardless :p
  • Some of the changes to Windows Update seem a step backwards to me. On the page where you select which updates to install, the published date column has been removed, so you have to click on each individual update to see the date. There is also now no "Install" button on that page, you are returned to the previous page to click on install which is a bit more mouse work.
  • Somehow this UI glitch wasn't spotted:


    Yes it is minor enough (the "System" text overlaps the mouse over background), but surely you would notice that from the get-go?
  • The new calculator also tends to slow me down. Vista essentially has the "Scientific" and "Programmer" combined in one, and as I use both views all the time this was really useful. They are separated in Windows 7 which means constant switching of the view, which also causes you to lose your current number (it did before, but I never needed to change view). If they had a toolbar with buttons to change the view, that might help. Animations that weren't quite as annoying after the tenth time would also help. As I mentioned previously, the swapping of the View and Edit menus is also a nuisance. (Some of the new parts of the calculator are useful though, for example the binary display in Programmer view).
  • It really seems unnecessary/mean to remove the Vista Ultimate Extra games (Hold 'Em etc.) when upgrading to Windows 7. It should provide compatible versions.
  • The best is saved until last: On the Windows Update restart reminder, the "Remind me in" time defaults to 10 minutes. If you click on the drop down (mouse left click), press down a few times to four hours (keyboard down arrow), click on the drop down again (mouse left click) and then click on Postpone (mouse left click) it will prompt you again in 10 minutes - not four hours. Not the first time mixed keyboard and mouse navigation has caused issues. This was probably an issue in Windows Vista too but I only recently worked it out. At least I now know why that prompt annoyed me to no end!
OK, I think I got most of it out of my system :p

Thursday, August 27, 2009

Braindead logging

Monday, August 03, 2009

Fun with ITaskbarList3::ThumbBarUpdateButtons

This issue just cropped up:

-We are in function A (a callback function)
-We call ITaskbarList3::ThumbBarUpdateButtons
-It calls SendMessageTimeout with the SMTO_NORMAL flag and not SMTO_BLOCK
-Another instance of our process does a SendMessage to the first instance (for command line processing in this case)
-That results in function B being called. But its not legal to call function B within function A!!

We end up with a boom of kinds.

The end result is that I will have to make all calls to ITaskbarList3::ThumbBarUpdateButtons from a custom message posted by PostMessage - because in any other case it can open up holes I don't want (even if they are rare holes....)

Update: As far as I can see, Shell_NotifyIcon does use the SMTO_BLOCK flag. So why ThumbBarUpdateButtons doesn't I don't know..

Saturday, July 18, 2009

Blurry text disease strikes again

A little while ago I wrote about how the Windows 7 RC jump lists are affected by such a problem. I decided to install Visual Studio 2010 Beta 1 and to my horror, it has also been struck by this illness in several places. Apparently something to do with that thing called WPF. Have a look at this over-sized blown up comparison of the main menu between VS2008 (top) and VS2010 Beta 1 (bottom):

Link to comparison screenshots

Look at that N, p and r! The Intellisense drop-downs are also quite bad.

How anyone can think that is remotely acceptable is beyond me, though apparently they are going to fix the Visual Studio problem for Beta 2.

Dan K kindly blew up my Windows 7 RC screenshot, and as you can see the problem is not nearly as bad there: http://shots.kordix.com/20090714_1.png. Still not great, though. Seems like they might have fixed the Windows 7 issue in builds after the RC, but the real test will be when the final version is out and installed here...