reporting-bugs.rst 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. .. _reporting_bugs:
  2. ==============================================================================
  3. Reporting bugs
  4. ==============================================================================
  5. A new bug can be filed here:
  6. https://gitlab.freedesktop.org/libinput/libinput/issues/new
  7. .. hint:: libinput has lots of users but very few developers. It is in your
  8. own interest to follow the steps here precisely to ensure your bug can be
  9. dealt with efficiently.
  10. When reporting bugs against libinput, you will need:
  11. - a reliable :ref:`reproducer <reporting_bugs_reproducer>` for the bug
  12. - a :ref:`recording <libinput-record>` of the device while the bug is reproduced
  13. - device-specific information, see
  14. - :ref:`reporting_bugs_touchpad`
  15. - :ref:`reporting_bugs_mouse`
  16. - :ref:`reporting_bugs_keyboard`
  17. - :ref:`reporting_bugs_trackpoint`
  18. - :ref:`reporting_bugs_other`
  19. - the :ref:`libinput version <reporting_bugs_version>` you are on.
  20. - the :ref:`configuration options <reporting_bugs_options>` you have set
  21. - a `gitlab account <https://gitlab.freedesktop.org/users/sign_in>`_
  22. Stay technical, on-topic, and keep the description concise.
  23. .. _reporting_bugs_version:
  24. ------------------------------------------------------------------------------
  25. Obtaining the libinput version
  26. ------------------------------------------------------------------------------
  27. If your libinput version is older than the current stable branch, please try
  28. the latest version. If you run a distribution-provided
  29. libinput, use the package manager to get the **full** package name and
  30. version of libinput, e.g.
  31. - ``rpm -q libinput``
  32. - ``dpkg -s libinput10``
  33. If you run a self-compiled version of libinput provide the git commit you
  34. have built or the tarball name.
  35. As a last resort, use ``libinput --version``
  36. .. _reporting_bugs_reproducer:
  37. ------------------------------------------------------------------------------
  38. Reproducing bugs
  39. ------------------------------------------------------------------------------
  40. Try to identify the bug by reproducing it reliably. Bugs without a
  41. reliable reproducer will have lowest priority. The more specific a bug
  42. description and reproducer is, the easier it is to fix.
  43. Try to replicate the series of events that lead to the bug being triggered.
  44. Narrow it down until you have a reliable sequence that can trigger the bug.
  45. For the vast majority of bugs you should not take longer than 5 seconds or
  46. three interactions (clicks, touches, taps, ...) with the device to
  47. reproduce. If it takes longer than that, you can narrow it down further.
  48. Once you can reproduce it, use the :ref:`libinput-debug-events` helper
  49. tool::
  50. $> libinput debug-events --verbose
  51. The output is textual and can help identify whether the bug is in libinput
  52. at all. Note that any configuration options you have set must be specified
  53. on the commandline, see the :ref:`libinput-debug-events`
  54. man page. Use the ``--verbose`` flag to get more information about how
  55. libinput processes events.
  56. If the bug cannot be reproduced with the :ref:`libinput-debug-events` helper,
  57. even with the correct configuration options set, it is likely not a bug in
  58. libinput.
  59. .. _reporting_bugs_options:
  60. ------------------------------------------------------------------------------
  61. libinput configuration settings
  62. ------------------------------------------------------------------------------
  63. libinput has a number of device-specific default configuration settings that
  64. may differ from the ones your desktop environment picks by default. You may
  65. have changed some options in a settings panel or in an the xorg.conf snippet
  66. yourself.
  67. You must provide these options in the bug report, otherwise a developer
  68. reproducing the issue may not be able to do so.
  69. If you are on X11, the current settings can be can be obtained with
  70. ``xinput list-props "your device name"``. Use ``xinput list`` to
  71. obtain the device name.
  72. If you are on Wayland, provide a manual summary of the options you have
  73. changed from the default (e.g. "I enabled tap-to-click").
  74. .. _reporting_bugs_touchpad:
  75. ------------------------------------------------------------------------------
  76. Reporting touchpad bugs
  77. ------------------------------------------------------------------------------
  78. When you file a bug, please attach the following information:
  79. - a virtual description of your input device, see :ref:`libinput-record`.
  80. This is the most important piece of information, do not forget it!
  81. - the output from udevadm info, see :ref:`udev_info`.
  82. - the vendor model number of your laptop (e.g. "Lenovo Thinkpad T440s")
  83. - and the content of ``/sys/class/dmi/id/modalias``.
  84. - run ``libinput measure touchpad-size`` tool (see :ref:`absolute_coordinate_ranges_fix`)
  85. and verify that the ranges and sizes it prints match the touchpad (up to 5mm
  86. difference is ok)
  87. If you are reporting a bug related to button event generation:
  88. - does your touchpad have (separate) physical hardware buttons or is the
  89. whole touchpad clickable?
  90. - Are you using software buttons or clickfinger? See :ref:`clickpad_softbuttons`.
  91. - Do you have :ref:`tapping` enabled?
  92. .. _reporting_bugs_mouse:
  93. ------------------------------------------------------------------------------
  94. Reporting mouse bugs
  95. ------------------------------------------------------------------------------
  96. When you file a bug, please attach the following information:
  97. - a virtual description of your input device, see :ref:`libinput-record`.
  98. This is the most important piece of information, do not forget it!
  99. - the vendor model number of the device (e.g. "Logitech M325")
  100. - the output from udevadm info, see :ref:`udev_info`.
  101. If the bug is related to the :ref:`speed of the mouse <motion_normalization_customization>`:
  102. - the resolution of the mouse as specified by the vendor (in DPI)
  103. - the output of the ``mouse-dpi-tool`` (provided by libevdev)
  104. .. _reporting_bugs_keyboard:
  105. ------------------------------------------------------------------------------
  106. Reporting keyboard bugs
  107. ------------------------------------------------------------------------------
  108. Is your bug related to a keyboard layout? libinput does not handle keyboard
  109. layouts and merely forwards the physical key events. File the bug with your
  110. desktop environment instead (e.g. GNOME, KDE, ...), that's most likely where
  111. the issue is.
  112. When you file a bug, please attach the following information:
  113. - a virtual description of your input device, see :ref:`libinput-record`.
  114. This is the most important piece of information, do not forget it!
  115. .. _reporting_bugs_trackpoint:
  116. ------------------------------------------------------------------------------
  117. Reporting trackpoint bugs
  118. ------------------------------------------------------------------------------
  119. When you file a bug, please attach the following information:
  120. - a virtual description of your input device, see :ref:`libinput-record`.
  121. This is the most important piece of information, do not forget it!
  122. - the vendor model number of the device (e.g. "Logitech M325")
  123. - the output from udevadm info, see :ref:`udev_info`.
  124. - the sensitivity of the trackpoint if it exists (adjust the event node number as needed): ::
  125. $ cat /sys/class/input/event17/device/device/sensitivity
  126. .. _reporting_bugs_other:
  127. ------------------------------------------------------------------------------
  128. All other devices
  129. ------------------------------------------------------------------------------
  130. When you file a bug, please attach the following information:
  131. - a virtual description of your input device, see :ref:`libinput-record`.
  132. This is the most important piece of information, do not forget it!
  133. - the vendor model number of the device (e.g. "Sony PlayStation3 controller")
  134. .. _udev_info:
  135. ------------------------------------------------------------------------------
  136. udev information for the device
  137. ------------------------------------------------------------------------------
  138. In many cases, we require the udev properties assigned to the device to
  139. verify whether device-specific quirks were applied. This can be obtained
  140. with ``udevadm info /sys/class/input/eventX``, with the correct event
  141. node for your device. An example output is below: ::
  142. $ udevadm info /sys/class/input/event4
  143. P: /devices/platform/i8042/serio1/input/input5/event4
  144. N: input/event4
  145. E: DEVNAME=/dev/input/event4
  146. E: DEVPATH=/devices/platform/i8042/serio1/input/input5/event4
  147. E: EVDEV_ABS_00=::41
  148. E: EVDEV_ABS_01=::37
  149. E: EVDEV_ABS_35=::41
  150. E: EVDEV_ABS_36=::37
  151. E: ID_INPUT=1
  152. E: ID_INPUT_HEIGHT_MM=66
  153. E: ID_INPUT_TOUCHPAD=1
  154. E: ID_INPUT_WIDTH_MM=97
  155. E: MAJOR=13
  156. E: MINOR=68
  157. E: SUBSYSTEM=input
  158. E: USEC_INITIALIZED=5463031
  159. .. _evemu:
  160. ------------------------------------------------------------------------------
  161. Recording devices with evemu
  162. ------------------------------------------------------------------------------
  163. .. warning:: Where available, the :ref:`libinput-record` tools should be used instead
  164. of evemu
  165. `evemu-record <https://www.freedesktop.org/wiki/Evemu/>`_ records the
  166. device capabilities together with the event stream from the kernel. On our
  167. side, this allows us to recreate a virtual device identical to your device
  168. and re-play the event sequence, hopefully triggering the same bug.
  169. evemu-record takes a ``/dev/input/eventX`` event node, but without arguments
  170. it will simply show the list of devices and let you select: ::
  171. $ sudo evemu-record > scroll.evemu
  172. Available devices:
  173. /dev/input/event0: Lid Switch
  174. /dev/input/event1: Sleep Button
  175. /dev/input/event2: Power Button
  176. /dev/input/event3: AT Translated Set 2 keyboard
  177. /dev/input/event4: SynPS/2 Synaptics TouchPad
  178. /dev/input/event5: Video Bus
  179. /dev/input/event6: ELAN Touchscreen
  180. /dev/input/event10: ThinkPad Extra Buttons
  181. /dev/input/event11: HDA Intel HDMI HDMI/DP,pcm=3
  182. /dev/input/event12: HDA Intel HDMI HDMI/DP,pcm=7
  183. /dev/input/event13: HDA Intel HDMI HDMI/DP,pcm=8
  184. /dev/input/event14: HDA Intel PCH Dock Mic
  185. /dev/input/event15: HDA Intel PCH Mic
  186. /dev/input/event16: HDA Intel PCH Dock Headphone
  187. /dev/input/event17: HDA Intel PCH Headphone
  188. /dev/input/event18: Integrated Camera
  189. /dev/input/event19: TPPS/2 IBM TrackPoint
  190. Select the device event number [0-19]:
  191. Select the device that triggers the issue, then reproduce the bug and Ctrl+C
  192. the process. The resulting recording, ("scroll.evemu" in this example) will
  193. contain the sequence required to reproduce the bug. If the bug fails to
  194. reproduce during recording, simply Ctrl+C and restart evemu-record.
  195. Always start the recording from a neutral state, i.e. without any buttons or
  196. keys down, with the position of the device in the neutral position, without
  197. touching the screen/touchpad.
  198. .. note:: The longer the recording, the harder it is to identify the event
  199. sequence triggering the bug. Please keep the event sequence as short
  200. as possible.
  201. To verify that the recording contains the bug, you can replay it on your
  202. device. For example, to replay the sequence recorded in the example above: ::
  203. $ sudo evemu-play /dev/input/event4 < scroll.evemu
  204. If the bug is triggered by replaying on your device, attach the recording to
  205. the bug report.
  206. libinput does not affect the evemu recording. libinput and evemu talk
  207. directly to the kernel's device nodes. An evemu recording is not
  208. influenced by the libinput version or whether a libinput context is
  209. currently active.
  210. .. graphviz:: evemu.gv
  211. .. _fixed_bugs:
  212. ------------------------------------------------------------------------------
  213. My bug was closed as fixed, what now?
  214. ------------------------------------------------------------------------------
  215. libinput's policy on closing bugs is: once the fix for a given bug is on git
  216. master, the bug is considered fixed and the gitlab issue will be closed
  217. accordingly.
  218. Of course, unless you actually run git master, the bug will continue to
  219. affect you on your local machine. You are most likely running the
  220. distribution's package and you will need to wait until the distribution has
  221. updated its package accordingly.
  222. .. warning:: Do not re-open a bug just because it hasn't trickled down to
  223. your distribution's package version yet.
  224. Whether the bug fix ends up in your distribution depends on a number of
  225. things. Any given bug fix **may** be cherry-picked into the current stable
  226. branch, depending on its severity, impact, and likelihood to cause
  227. regressions. Once cherry-picked it will land in the next stable branch
  228. release. These are usually a few weeks apart.
  229. .. warning:: Do not re-open a bug because it wasn't picked into a stable branch
  230. release or because your distribution didn't update to the latest stable
  231. branch release.
  232. Stable branches are usually discontinued when the next release comes out.
  233. Your distribution may pick a patch up immediately and ship the fix
  234. even before the next stable branch update is released. For example, Fedora
  235. does this frequently.
  236. .. hint:: If a bug needs to be fixed urgently, file a bug in your
  237. distribution's bug tracker.
  238. Patches on git master will end up in the next libinput release. Once your
  239. distribution updates to that release, your local libinput version will
  240. contain the fix.
  241. .. warning:: Do not re-open a bug because your distribution didn't update to
  242. the release.
  243. You can always run libinput from git master (see :ref:`building_libinput`).
  244. Even while in development, libinput is very stable so this option isn't as
  245. scary as it may sounds.
  246. .. _reporting_bugs_reopen:
  247. ..............................................................................
  248. When is it ok to re-open a fixed bug?
  249. ..............................................................................
  250. Any time the bug was considered fixed but it turns out that the fix is
  251. insufficient and/or causes a regression.
  252. However, if the regression is in behavior unrelated to the fix itself it is
  253. usually better to file a new bug to reduce the noise. For example, if a fix
  254. to improve tapping breaks two-finger scrolling behavior, you should file a
  255. new bug but reference the original bug.
  256. .. _reporting_bugs_tags:
  257. ------------------------------------------------------------------------------
  258. Gitlab issue tracker tags
  259. ------------------------------------------------------------------------------
  260. The gitlab issue tracker allows developers to add tags to bugs to classify
  261. them.
  262. - **being worked on**: someone is currently working on this feature. This
  263. tag is used for features that will take a long time to implement fully and
  264. prevents others from having to duplicate the work. Do reach out and ask if
  265. help and/or further testing is needed.
  266. - **bug**: issue is confirmed to be a bug
  267. - **cantfix**: for technical reasons, this bug cannot be fixed, or at least
  268. it cannot be fixed in libinput.
  269. - **enhancement**: this issue describes a future feature, not a bug.
  270. - **help needed**: this issue requires someone outside the libinput core
  271. developer team to implement it. It is unlikely to be implemented
  272. without someone stepping up to do the work. If you do see this tag, do ask
  273. for guidance on how to implement it.
  274. - **hw issue**: an issue that affects a specific device and is a hardware
  275. bug, not a software bug. Often these need to be worked around in libinput
  276. but there are cases where a hw issue ends up as *cantfix*.
  277. - **janitor**: a cleanup task that does not substantially affect how
  278. libinput works. These are usually good bugs for newcomers to start on.
  279. - **kernel**: this issue is a kernel bug, not a libinput bug. Often closed
  280. as *cantfix* of *wontfix* as we wait for the kernel to address the issue
  281. instead.
  282. - **needs triage**: bug has not yet been confirmed by a core developer.
  283. - **not our bug**: the issue is in some other component of the stack and
  284. needs to be addressed there.
  285. - **please test**: a fix is available but not yet merged and should be
  286. tested by the reporter or others affected by the issue.
  287. - **quirk**: this is issue needs :ref:`device-quirks` to be fixed
  288. - **regression**: the issue is a regression to previous versions of
  289. libinput. These issues get priorities.
  290. - **waiting on reporter**: some more information is required from the
  291. reporter and the issue cannot be fixed until the issue has been provided.
  292. Where a bug is left in this state for too long, the bug will be closed as
  293. *cantfix*.
  294. - **wontfix**: this issue will not get fixed. This tag is usually assigned
  295. to feature requests that are outside the scope of libinput or would put an
  296. unreasonable maintenance burden on the maintainers.
  297. These tags are high-level categories only, always look for the comments in
  298. the issue to get further details.