Project

General

Profile

Bug #5581

ChUI slowdown when child OS process holds open input

Added by Roger Borrello almost 3 years ago. Updated almost 3 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
Due date:
% Done:

0%

billable:
No
vendor_id:
GCD
case_num:

History

#2 Updated by Roger Borrello almost 3 years ago

Most of the good information starts at #4982-87 and forward. The issue came to light when a supporting script was reverted to a non-Unix format (since they were kept on a Windows server, and zipped up from there, then transferred to the Ubuntu server). The underlying script was dying as a child process of the 4GL (due to the non-Unix format), but kept the input stream opened. The FWD ChUI would become very, very unresponsive.

To attempt to duplicate the issue, various scripts were created, and tried to store them as DOS format instead of Unix (using unix2dos and dos2unix). However, the 4GL is tolerant of the format (unlike FWD) so duplication using that method didn't work. Instead, we have to create a script that would hold open the input stream.

I will post more details, and duplicating scripts here, once they are cleaned up.

#3 Updated by Roger Borrello almost 3 years ago

Testcase ./uast/hang_through.p was added. When you uncomment the update i with frame f2. you get Progress to hang.

/*
 * hangout.cmd can be: set /p d=yes or no [y/n]?: 
 * hangout can be : read -p "yes or no [y/n]? " yn
*/
def var i as int.
def var ch as char format "x(256)".
def var cmd as char init "hangout.cmd".

if opsys = "unix" then
  assign cmd = "countprogusers".

input through value(cmd) no-echo.
set ch with frame f1 size 20 by 20 no-error.
input close.
message ch.

/*update i with frame f2.*/

def var p1 as char.

form p1 with frame f3 no-labels 10 down.
do i = 1 to 9:
   p1 = string(i).
   display p1 with frame f3.
   down with frame f3.
end.

choose row p1 with frame f3.

Also available in: Atom PDF