Take a look at our
ThinkPads.com HOME PAGE
For those who might want to contribute to the blog, start here: Editors Alley Topic
Then contact Bill with a Private Message

Windows XP/Vista/7 TrackPoint driver memory leak => crashes

Forum for scripts, utilities like TPFanControl, IBM-ECW, 2-finger scrolling, etc.
Post Reply
Message
Author
HackerMatt
Posts: 1
Joined: Fri Jan 22, 2010 12:24 pm
Location: Easton, PA

Windows XP/Vista/7 TrackPoint driver memory leak => crashes

#1 Post by HackerMatt » Mon Jan 25, 2010 1:14 pm

I finally pinpointed the TrackPoint driver on my R61i as the cause of the consistent network failures (requiring reboot) and sometimes crashes that have plagued it since I got it 18 months ago, and I'm pretty sure the problem also exists on the numerous other models that use this driver. I believe I've located the memory leak narrowly enough that it should be easy for the driver programmers to fix: Kernel memory is allocated in 200-byte blocks at a time when tapping or holding the TrackPoint center button, but it is never freed. Full details follow.

Does anyone know how I can best raise this issue to the attention of the Lenovo driver programmers/engineers, who could then fix the bug and release a new version that won't cause crashes? I notice that Mark@Lenovo eventually responded to a similar thread about a resource leak here:

Power Manager consuming Handles? Leak?

My specs:

Model: ThinkPad R61i 7650-DHU
OS: Windows XP Professional SP 3 (32-bit)

The latest TrackPoint driver (version 4.69) for a number of R, T, X, and Z ThinkPad models running 32-bit Windows 7, Vista, or XP has a consistent memory leak that eventually causes all network connections to fail and sometimes causes Windows to crash. The support page describing this driver (but without any mention of this problem, even though my ThinkPad has had the problem since at least June 2008) is here:

TrackPoint Driver for Windows 7 (32-bit), Vista (32-bit) and XP - ThinkPad

Whenever holding the center button to use either the scrolling or magnifying glass features, the trackpoint driver (tp4track.sys) allocates 200 bytes of non-paged kernel memory at a time, doing 50-100 such allocations (10-20 kB) per second of scrolling or moving the magnifying glass. However, it never frees any of this non-paged kernel memory, because Poolmon (Microsoft's Memory Pool Monitor) always shows only 3 frees regardless of how long Windows has been running. Here's an example after using the scrolling feature for just a handful of seconds:

Code: Select all

 Tag  Type     Allocs            Frees            Diff   Bytes       Per Alloc

 Tp4T Nonp       2657 (   0)         3 (   0)     2654  485288 (     0)    182
After using the scroll feature regularly over a period of time, the non-paged kernel memory pool (which is limited to 256 MB in XP) runs out, so other drivers like the networking stack get stuck when they can't allocate memory, leading to network failures and sometimes crashes. The only option at that point is to *try* to save whatever work is open in programs (they often don't run reliably by then) and reboot. This situation is unacceptable when important work has to be done.

The only workaround to prevent kernel failures is to avoid using the center button scrolling (or magnifying glass) feature, but scrolling without it is cumbersome and a lot slower. The memory leak in this driver needs to be fixed.

As further confirmation of this memory leak, I found this report about the problem from January as item 914 of this Japanese page (Google translation is a bit rough, but the meaning is clear):

http://unkar.jp/read/pc11.2ch.net/notepc/1226594699
PS / 2 Track Point
Version: 4.64.0.0

C: \ WINDOWS \ system32 \ DRIVERS \ tp4track.sys
File Version: 4.64

How to reproduce ....
Something middle button features (such as scrolling or larger) to set up
Use the middle button function.

Workaround is to ......
Button functions in the "off (Windows standard)" is set to not leak memory.

Amount of memory leak ...........
=> 200bytes in one button click
Middle button + drag => N x 200bytes (N is dependent on the amount of drag & drop.)
Scroll one screen at one time within about 20k ~ 100kbytes.

"Poolmon.exe (Windows Support Tools included)" to check the status of a memory leak ...
Windows after startup:
Pool N: 114804K P: 113716
Tag Type Allocs Frees Diff Bytes Per Alloc
Tp4T Nonp 231152 (0) 3 (0) 231149 46235976 (0) 200

Currently:
Pool N: 176212K P: 127556
Tag Type Allocs Frees Diff Bytes Per Alloc
Tp4T Nonp 532056 (0) 3 (0) 532053 106416776 (0) 200

How do I find memory leaks is easier .... I ?Ranee ?Nante poolmon.exe ?
Task Manager => "Performance" tab => Kernel Memory (KB) => non-paged
Compared with the value immediately after starting Windows.
Tens of thousands (hundreds of MB) to increase the value if the possibility of memory leaks that are "large".

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “ThinkPad Utility Work Area”

Who is online

Users browsing this forum: No registered users and 15 guests