From: ryan.mckern@... Date: 2014-09-11T17:58:15+00:00 Subject: [ruby-core:64969] [ruby-trunk - Feature #10090] Display of program name in process listing under AIX Issue #10090 has been updated by Ryan McKern. I wanted to update this with our findings. This is definitely a result of the functionality in `missing/setproctitle.c`, which was imported from OpenSSH starting in the 1.9.x branch. In version 1.9.3p547, on line 118, there's the line: ~~~ argv[1] = NULL; ~~~ This results in the following behavior with a variation of our infinite loop test script on AIX: ~~~ [0] [AIX] root@pe-aix-71-agent:~/ruby-oob/ruby-1.9.3-p547 # /opt/ruby-1.9.3-p547/bin/ruby ../tests/test_proctitle.rb proctitle is ../tests/test_proctitle.rb pid is 5111980 ~~~ ~~~ [0] [AIX] root@pe-aix-71-agent:~ # ps auxww | grep 5111980 root 5111980 0.0 1.0 4248 5428 pts/0 A 00:12:47 0:00 /opt/ruby-1.9.3-p547/bin/ruby ~~~ Changing this value to initialize a different index in `argv` results in predictable behavior, where the proctitle is truncated according to where the NULL is encountered in `argv`: ~~~ argv[3] = NULL; ~~~ ~~~ [0] [AIX] root@pe-aix-71-agent:~/ruby-oob/ruby-1.9.3-p547 # /opt/ruby-1.9.3-p547/bin/ruby -r rubygems ../tests/test_proctitle.rb proctitle is ../tests/test_proctitle.rb pid is 5111994 ~~~ ~~~ root 5111994 0.0 0.0 4256 3740 pts/0 A 00:18:49 0:00 /opt/ruby-1.9.3-p547/bin/ruby -r rubygems [0] [AIX] root@pe-aix-71-agent:~ # ~~~ And commenting out or removing this assignment entirely results in behavior that appears to correspond with both expectations and with Ruby 1.8.7: ~~~ // argv[1] = NULL; ~~~ ~~~ [0] [AIX] root@pe-aix-71-agent:~/ruby-oob/ruby-1.9.3-p547 # /opt/ruby-1.9.3-p547/bin/ruby -r rubygems ../tests/test_proctitle.rb proctitle is ../tests/test_proctitle.rb pid is 5112008 ~~~ ~~~ root 5112008 0.0 0.0 4256 3836 pts/0 A 00:29:42 0:00 /opt/ruby-1.9.3-p547/bin/ruby -r rubygems ../tests/test_proctitle.rb [0] [AIX] root@pe-aix-71-agent:~ # ~~~ ---- This appears pretty clearly to be a bug in the code and not a shortcoming of the platform. ---------------------------------------- Feature #10090: Display of program name in process listing under AIX https://bugs.ruby-lang.org/issues/10090#change-48851 * Author: Geoff Nichols * Status: Third Party's Issue * Priority: Normal * Assignee: Yutaka Kanemoto * Category: platform/aix * Target version: ---------------------------------------- On AIX, the process listing (displayed with the `ps` command) for a program using Ruby 2.1.2 (or Ruby 1.9.3) shows only the Ruby interpreter path. However, on other platforms (Linux, OS X), the process listing (for the same Ruby program) shows the Ruby interpreter path as well as the program name. The requested default behavior is for the process listing to display the Ruby interpreter path as well as the program name on AIX. Here's an example of the current behavior (on AIX 7.1): ~~~ # /tmp/test_script.rb & [1] 10420428 # ps -ef | grep 10420428 | grep -v grep root 10420428 7799016 0 05:35:10 pts/0 0:00 /usr/bin/ruby # /usr/bin/ruby -v ruby 2.1.2p95 (2014-05-08 revision 45877) [powerpc-aix7.1.0.0] ~~~ Here's an example of the desired behavior (on CentOS 6.5): ~~~ # /tmp/test_script.rb & [1] 4951 # ps -ef | grep 4951 | grep -v grep root 4951 4244 0 12:22 pts/1 00:00:00 /usr/bin/ruby /tmp/test_script.rb # /usr/bin/ruby -v ruby 2.1.2p95 (2014-05-08 revision 45877) [i686-linux] ~~~ Here is the test script used on both platforms: ~~~ #!/usr/bin/ruby loop do sleep(1) end ~~~ -- https://bugs.ruby-lang.org/