11 ms·
Hey Synaptics, Can You Please Stop Polling
- wslh 9y agoI appreciate the author took time to write about this but I am skeptic about this because all Lenovo community knew about this issue. This is when you need a hero to reverse engineering and deploy a better driver if possible.
- pg_is_a_butt 9y agoHey Morons, Can You Stop Buying Lenovo?
- tardo99 9y agoWait what's shimming?
- tbirrell 9y agoRedefining a thing to do a different thing to achieve the same result. You'll see it a lot in older systems where you have a billion deprecated functions, and instead of changing each instance to use the new version, you trick the system by appropriating the old version to point to custom code that runs the new version and passes back whatever the old version is expected to return.
- nxc18 9y agoWindows has loads of stuff that is run conditionally on hardware and software configuration. I would not be surprised if Microsoft added a check to make the functions mentioned have different behavior. If you read the latest Windows Internals you'll learn about tons of things along those lines. There's lots of very specific behavior that gets triggered when you run things in compatibility mode, for example. Basically, Windows' value proposition is broad hardware and software compatibility, and it will bend over backwards to make that happen, despite a developer's best efforts.
- geofft 9y agoIn context, the Microsoft OS detecting the problematic driver and patching out calls to various functions to make it behave better. This is more commonly used for bug-for-bug backwards compatibility: if there's a a third-party application that was incorrectly using some Windows API which has been fixed in a newer version, and the fix breaks the application, MS might shim that version of the application with a call to the older version of the function or even a new piece of code that emulates the desired behavior. (Non-Windows users might recognize this as the same basic technical approach as LD_PRELOAD / DYLD_INSERT_LIBRARIES, or a little more generically, symbol versioning.)
- brucedawson 9y agoMicrosoft has a very elaborate backwards compatibility system. They can do things like like to some processes about what version of Windows they are running on, change the behavior of particular APIs to work around application bugs, and generally inject whatever hacks and adjustments that they need in order to ensure that old or badly written software continues to run on new versions of Windows. It's glorious (lousy software continues to work while Microsoft is able to continue improving the OS) and terrible (software developers who are updating their software get shims applied and this complicates development, hides bugs, etc. https://en.wikipedia.org/wiki/Shim_(computing) https://en.wikipedia.org/wiki/Shim_(computing)
- rubenbe 9y agoPreviously I had a Thinkpad T60p as laptop, when tickless Linux kernels (iirc 2.6.21) and powertop were all new. I made a ultra-idle setup which generated only 10-20 interrupts per second. That was, until you even dared to touch the synaptics touchpad, then it shot up to ~500 rendering all the other efforts useless.
- haikuginger 9y agoCurious; did you see similar interrupt levels when just using the nubbin?
- mjg59 9y agoThat's because it's reporting input events at high resolution. The alternative is jerky input. And if you're moving a pointer around the screen then you're going to be keeping the CPU and GPU powered up anyway which means the interrupts from the trackpad really aren't the problem.
- verandaguys_alt 9y agoHonest question: is there any need to poll the touchpad more often than the screen's refresh rate (usually 144Hz or below as of this post)?
- dyladan 9y agoYes there is. Humans are normally not very responsive to the time between when an action is started and when it is carried out on the screen, but this changes for actions like drawing and dragging. This is the reason for the new Pro Motion behavior on the recently released iPad Pro models. For more information, this video [1] is a good place to start. [1] https://www.youtube.com/watch?v=vOvQCPLkPt4 https://www.youtube.com/watch?v=vOvQCPLkPt4
- njarboe 9y ago"not very responsive"? I'm responsive. I mutter things like, "Shit, why does it seem that the amount of lag in my computer's response to my inputs get worse and worse as its physical components get faster and faster."
- throwaway613834 9y agoI don't understand, isn't polling orthogonal to a memory leak? How would fixing one fix the other?
- comex 9y agoIt does seem to be orthogonal in this case, so the title is a bit misleading.
- pm215 9y agoThe analysis suggests that the driver is polling for 'process created' events and then leaking something every time such an event occurs, so the two issues are somewhat related (likely the same bit of code implementing whatever feature this is).
- throwaway613834 9y agoIt's not like a notification or callback mechanism would make it any better though? It might even be worse since it wouldn't miss quick startups and shutdowns that polling could miss...
- brucedawson 9y agoWhile the memory leak and the polling are in the same code it is likely that they require two different fixes - unless the notification of process creation is totally unnecessary.
- throwaway613834 9y agoAFAIK there's no way to get arbitrary process creation notifications without either registering for ETW (which only allows one real-time consumer, hence crippling the system, and which has a very long delay) or using kernel mode code (which I guess could work here since the already have a driver, but might present obstacles I'm not aware of). Another way is to use AppInit_DLLs which might be appropriate since anything that needs the mouse should probably load user32.dll, but otherwise it would miss something. Polling seems like the most foolproof way to do it purely in user mode.
- raverbashing 9y ago"Enhancements" Eff those enhancements, kill that process and remove it from startup. This is not the drive per se, it's just some stupid "helper app" Shimming: https://technet.microsoft.com/en-us/library/dd837644(v=ws.10).aspx https://technet.microsoft.com/en-us/library/dd837644(v=ws.10... (most likely making the offending function being called repeatedly return a mock value)
- throwaway613834 9y agoIt makes the settings actually work though. Most people need the app for a usable touchpad.
- Animats 9y agoFirefox, just sitting there on a page with zero activity, manages to burn about 5% of a CPU doing garbage-collection related tasks within Gecko. Maybe this will get better with the Rust version.
- deleted 9y ago[deleted]
- dbaupp 9y agoGC is due to Javascript not C++.
- Animats 9y agoFirefox has an internal GC for C++ objects managed by its XPCOM system.[1] It's called the "cycle collector". [1] https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Interfacing_with_the_XPCOM_cycle_collector https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/...
- dbaupp 9y agoAnd Servo uses a GC deeply within its Rust code too (the JS one, in fact). I think the benefits in Servo with respect to GC would mainly be because the code is new/learnt from the mistakes of the old (and avoided historical baggage), rather than because it is in Rust.
- eridius 9y agoIf it's continually garbage collecting then surely it's not actually zero activity, no? JavaScript must be doing something.
- gog 9y agoI am not sure if it relates, but this happens to me on some pages. If I turn off all styles (CSS), then the CPU usage drops to 0. In my case, CSS is the culprit because the same page does this on Chrome as well.
- daenney 9y agoAm I the only one who's a bit disappointed by MS's response? I get that shimming would fix it but wouldn't it be more productive if they'd put some pressure on Synaptics to fix it? They might take notice if Microsoft comes knocking. There's a bajimillion Windows devices potentially going through life with this bug as Synaptics trackpads are pretty pervasive. Not saying they shouldn't do the shim, but I'd hope they would go further than that.
- michaelhoffman 9y agoAt Microsoft's scale, probably not. Their inability to successfully pressure third-party software vendors to do the right thing is why they developed the shimming infrastructure in the first place.
- emodendroket 9y agoWhat would you have them do?
- michaelhoffman 9y agoYour question is probably better directed at the parent.
- tinus_hn 9y agoIf they removed the drivers from the installation image so people had to manually install software for Synaptics devices to work, I think Synaptics would notice rather quickly. They are not some obscure vendor that has gone out of business. It's just another excuse for shoddy quality.
- breakingcups 9y ago"Installing Windows (10 + 1) broke my touchpad, it was working perfectly fine before! Microsoft can't do anything right!"
- mamurphy 9y ago
- colanderman 9y agoPah that's nothing. My wife's old HP laptop had a driver dedicated to controlling the LED on the speaker mute key that used an entire core. Permanently disabling the service fixed the issue with no loss in functionality… except the LED light!
- justabystander 9y agoSynaptics drivers are horrendous. In addition to the terrible performance, mine has given me 10+ bluescreens on Win10. I'd love to remove them, but they're needed for some of the basic functionality. And they also seem to randomly make my mouse laggy (when I'm at a desk and plugged in). Honestly, a generic trackpad driver that suppliers 2-finger scrolling, 2/3 finger mouse button emulation, and _maybe_ pinch-to-zoom would be all I want. If someone put in some plugin interface with an API so everyone could add the additional magic, it would help people with more complex needs. I'd love to kick synaptics to the curb. They've had decades to write a driver for the only thing they're known for, and yet still can't seem to handle it.
- khedoros1 9y agoI'd like that, plus configuration of palm detection and the size of the virtual mouse buttons on the touchpad. Their drivers make things just a little bit of hell. It's one place that I would've expected the Windows drivers to shine in comparison to Linux, but my Linux partition is so much more useable. Synaptics Windows driver: "You want to hold down control to select some files? OK, now you can't move the mouse. You're welcome."
- Const-me 9y ago> a generic trackpad driver that suppliers 2-finger scrolling, 2/3 finger mouse button emulation, and _maybe_ pinch-to-zoom On my laptop, a generic “HID-compliant touch pad” driver, made by Microsoft, does all you that including zoom. No third-party software needed, just Windows 10. Not all touchpads are compatible, but it already works for many Win10 laptops. Mine is Acer BTW, with some Elan touchad. https://arstechnica.com/gadgets/2016/10/pc-oems-ditch-the-custom-touchpad-drivers-give-us-precision-touchpad/ https://arstechnica.com/gadgets/2016/10/pc-oems-ditch-the-cu...
- joshschreuder 9y agoDo you have some kind of other hotkey software installed? I had SynTP.sys bluescreens with a Clevo laptop, turns out Clevo hook the driver with their Control Centre software and Windows reports that the touchpad driver is causing the problem, rather than the hotkey filter from Clevo [1]. [1] http://forum.notebookreview.com/threads/synaptics-causes-bsod-on-p650se.770938/page-16#post-10235938 http://forum.notebookreview.com/threads/synaptics-causes-bso...
- lanius 9y agoI wish drivers were open source so we could fix these issues ourselves instead of helplessly waiting for updates from manufacturers.
- microcolonel 9y agoWell, there are open source synaptics touchpad drivers which are license-compatible with Windows. In this sense, Microsoft is to blame.
- thomastjeffery 9y agoLicense-compatible does not remotely mean Windows-compatible.
- pedrocr 9y agoThey are if you use an open source operating system. If not you've already accepted this anyway in your whole stack.
- gens 9y agoAnd some Fedora developers want to bring this kind of shit to linux.
- khana 9y agoI trust Lenovo as far as I can throw my house.
- symlinkk 9y agoThis is absurd and is why people prefer Apple computers, where one company controls the whole software and hardware stack (that includes touchpad drivers) and can ensure that this shit doesn't happen.
- Gaelan 9y agoYou don’t use iCloud Drive, do you?
- mitchty 9y agoI do, are we going to use anecdotes as data? What about iCloud drive applies to drivers for hardware in this instance?
- djrogers 9y agoI do, and since day one with 4 computers, 3 iCloud accounts, and many hundreds of GB of data I've never had a problem. What's your point?
- Gaelan 9y agoHuh, I guess it's unique to me. See my reply to the other person.
- deleted 9y ago[deleted]
- wslh 9y agoThere is a big gap between the hardware, the drivers, and the operating system and "nobody" to blame or who can take responsibility for the whole system. This happens in Windows mainly, you can buy the last notebook and replace it before this stuff is solved. I had the synaptic issue and many others with the X220 and Windows and now suffer other new issues with the latest XPS 13.
- extr 9y agoI also have both an x220 and an XPS 13, both running Arch. x220 has always worked/felt great with synaptics driver, XPS 13 still has issues which I somewhat suspect are due to using libinput. Also might be a hardware issue :/
- thomastjeffery 9y agoOver the past ~5-10 years, multitouch touchpads have been much more painful in Windows than in any other modern OS. Why? These awful Synaptics drivers. There have been free drivers in Linux that have worked painlessly for years, yet in Windows, nothing has changed. I see this as a poignant example that closed-source drivers are just a bad idea.
- leecarraher 9y agodisabled it in the bios and physically disconnected it, the day i got it.
- yuhong 9y agoI had to "Update Driver" after BSoDs in aps2kb2hid.sys. I never updated it though.
- alternize 9y agothis problem has been introduced in a driver update around march. but it has been fixed for me (lenovo x1 yoga) in the latest synaptics touchpad driver update v19.3.4.97 [0]: [Problem fixes] - Fixed an issue where Touchpad Driver might cause high cpu usage of "WmiPrvSE.exe". [0] https://pcsupport.lenovo.com/ch/en/products/LAPTOPS-AND-NETBOOKS/THINKPAD-X-SERIES-LAPTOPS/THINKPAD-X1-YOGA-TYPE-20FQ-20FR/20FR/S2M600/downloads/DS118386 https://pcsupport.lenovo.com/ch/en/products/LAPTOPS-AND-NETB...