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/