[Bug 1702767] [NEW] pname (Process name) completion script fails to handle wine generated path names
Pauli
1702767 at bugs.launchpad.net
Thu Jul 6 21:17:11 UTC 2017
Public bug reported:
I'm playing The Witcher 3 in wine. The game plays mostly fine except it
deadlocks when trying to exit. To clear the deadlocked memory hog
process I need to kill it manually. I tried to use killall with tab
completion to clear the process but then I noticed pname completion
function in /usr/share/bash-completion/bash_completion doesn't handle
windows paths at all.
There is two problems in windows names:
1. It may use backslashes (but wine supports also unix paths if application is launched from terminal)
2. There is often spaces in the directory path
Attached possible fix is fairly simple addition to sed replace script to
handle windows names first before anything else. It only handles .exe
files but script could be modified to handle other extensions like -e
"s:.*[\\\\\/]\([^ ]*\\.\\(exe\\|bat\\)\\):\\1:". But I didn't want to
add any other extensions because I haven't seen them used.
The possible fix still has a weakness if command line arguments include
filenames with exe extension. I just don't see how to write a simple
script that handles spaces in directory path and arguments having exe
extension. If wanting to handle the extension in argument list corner
case it could be done using multi step completion involving parsing
/proc/<pid>/cmdline that has list of null terminate strings making it
much simpler to separate arguments from directory path. Too bad ps tool
doesn't already offer option to display that information instead of
/proc/<pid>/comm that truncates long command names.
I tried to use single quotes to reduces backslashes but that didn't work
in completion script. That forced me to choose double quotes and doubled
backslashes.
I tested the patch in my system completion script directly. killall
completion now allows me to complete both windows and native process
names without any issues yet.
ProblemType: Bug
DistroRelease: Ubuntu 17.04
Package: bash-completion 1:2.1-4.3ubuntu1
ProcVersionSignature: Ubuntu 4.10.0-26.30-generic 4.10.17
Uname: Linux 4.10.0-26-generic x86_64
NonfreeKernelModules: nvidia_uvm nvidia_drm nvidia_modeset nvidia
ApportVersion: 2.20.4-0ubuntu4.1
Architecture: amd64
CurrentDesktop: LXDE
Date: Thu Jul 6 23:12:43 2017
InstallationDate: Installed on 2037-12-25 (-7476 days ago)
InstallationMedia: Lubuntu 16.04 LTS "Xenial Xerus" - Release amd64 (20160420.1)
PackageArchitecture: all
SourcePackage: bash-completion
UpgradeStatus: Upgraded to zesty on 2017-06-06 (30 days ago)
** Affects: bash-completion (Ubuntu)
Importance: Undecided
Status: New
** Tags: amd64 apport-bug zesty
** Patch added: "Possible fix for pname completion (doesn't handle spaces in process name but I haven't seen spaces in yet in exes)"
https://bugs.launchpad.net/bugs/1702767/+attachment/4910472/+files/fix_windows_names_for_pname_completion.patch
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to bash-completion in Ubuntu.
https://bugs.launchpad.net/bugs/1702767
Title:
pname (Process name) completion script fails to handle wine generated
path names
Status in bash-completion package in Ubuntu:
New
Bug description:
I'm playing The Witcher 3 in wine. The game plays mostly fine except
it deadlocks when trying to exit. To clear the deadlocked memory hog
process I need to kill it manually. I tried to use killall with tab
completion to clear the process but then I noticed pname completion
function in /usr/share/bash-completion/bash_completion doesn't handle
windows paths at all.
There is two problems in windows names:
1. It may use backslashes (but wine supports also unix paths if application is launched from terminal)
2. There is often spaces in the directory path
Attached possible fix is fairly simple addition to sed replace script
to handle windows names first before anything else. It only handles
.exe files but script could be modified to handle other extensions
like -e "s:.*[\\\\\/]\([^ ]*\\.\\(exe\\|bat\\)\\):\\1:". But I didn't
want to add any other extensions because I haven't seen them used.
The possible fix still has a weakness if command line arguments
include filenames with exe extension. I just don't see how to write a
simple script that handles spaces in directory path and arguments
having exe extension. If wanting to handle the extension in argument
list corner case it could be done using multi step completion
involving parsing /proc/<pid>/cmdline that has list of null terminate
strings making it much simpler to separate arguments from directory
path. Too bad ps tool doesn't already offer option to display that
information instead of /proc/<pid>/comm that truncates long command
names.
I tried to use single quotes to reduces backslashes but that didn't
work in completion script. That forced me to choose double quotes and
doubled backslashes.
I tested the patch in my system completion script directly. killall
completion now allows me to complete both windows and native process
names without any issues yet.
ProblemType: Bug
DistroRelease: Ubuntu 17.04
Package: bash-completion 1:2.1-4.3ubuntu1
ProcVersionSignature: Ubuntu 4.10.0-26.30-generic 4.10.17
Uname: Linux 4.10.0-26-generic x86_64
NonfreeKernelModules: nvidia_uvm nvidia_drm nvidia_modeset nvidia
ApportVersion: 2.20.4-0ubuntu4.1
Architecture: amd64
CurrentDesktop: LXDE
Date: Thu Jul 6 23:12:43 2017
InstallationDate: Installed on 2037-12-25 (-7476 days ago)
InstallationMedia: Lubuntu 16.04 LTS "Xenial Xerus" - Release amd64 (20160420.1)
PackageArchitecture: all
SourcePackage: bash-completion
UpgradeStatus: Upgraded to zesty on 2017-06-06 (30 days ago)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bash-completion/+bug/1702767/+subscriptions
More information about the foundations-bugs
mailing list