I preface this by understanding that shared variables ((⎕SVO,etc) are considered an obsolete feature of GNU APL. I have my preferences set so that APserver is never started by default. But I've come across the following when using the default GNU APL behavior of enabling shared variable support. 

When starting the interpreter in SVN 2133 on macOS 26 and 27 with the shared variable support enabled, I'm greeted with the following:

% apl --SV

/usr/local/bin/APserver: listen socket has died unexpectedly

/usr/local/bin/APserver: listen socket has died unexpectedly

::connect() to supposedly existing APserver failed: Socket is already connected


                    ______ _   __ __  __    ___     ____   __ 

                   / ____// | / // / / /   /   |   / __ \ / / 

                  / / __ /  |/ // / / /   / /| |  / /_/ // /  

                 / /_/ // /|  // /_/ /   / ___ | / ____// /___

                 \____//_/ |_/ \____/   /_/  |_|/_/    /_____/


                  Welcome to GNU APL version 2.0 / SVN: 2133M


                 Copyright © 2008-2026  Dr. Jürgen Sauermann

                       Banner by FIGlet: www.figlet.org


                This program comes with ABSOLUTELY NO WARRANTY;

                          for details run: apl --gpl.


     This program is free software, and you are welcome to redistribute it

     according to the GNU General Public License (GPL) version 3 or later.


Svar_DB not connected in Svar_DB::is_registered_id() (APserver not running; shared variables unavailable)

      /usr/local/bin/APserver: listen socket has died unexpectedly

/usr/local/bin/APserver: listen socket has died unexpectedly

)      /usr/local/bin/APserver: listen socket has died unexpectedly

o       ff


Goodbye.

Session duration: 4.67723 seconds 

paulrockwell@Upstairs ~ % /usr/local/bin/APserver: listen socket has died unexpectedly

k/usr/local/bin/APserver: listen socket has died unexpectedly

killall/usr/local/bin/APserver: listen socket has died unexpectedly

 AP/usr/local/bin/APserver: listen socket has died unexpectedly

serv/usr/local/bin/APserver: listen socket has died unexpectedly

er


The error messages from APserver continue after I stop the interpreter because the /usr/local/bin/APserver process is still running in the background. I have to locate and kill the process manually.

Debugging the source code by executing APserver manually like GNU APL is doing behind the scenes revealed that the followng code in src/APs/APserver.cc  function listen_sock() is returning failure:

        // read() cannot be used to probe a Winsock SOCKET on Windows --

        // it is not a CRT file descriptor, only recv()/send()/ioctlsocket()

        // are valid on it -- so this always (falsely) reported the listen

        // socket, and then any freshly accepted connection, as dead on

        // every pass, immediately closing real connections again via

        // close_fd() below. A dead listen socket has no corrective action

        // here anyway (just the message); on Windows a dead per-connection

        // socket is still caught by the normal recv() return value once

        // real data-handling code runs on it later in the loop, the same

        // way most Windows socket servers detect a disconnect.

        if (0 != read(listen_sock, &dummy, 0))

           cerr << prog << ": listen socket has died unexpectedly" << endl;



The read() on listen_sock is returning error code 57 (ENOTCONN), in case that helps. 

I've included the configure output, config.log, and config.h so you can see how GNU APL has been configured. 

A side request: If you consider shared variable support to be obsolete, could the global GNU APL preferences be configured so that shared variable support is disabled by default?

Attachment: config_info.tar.gz
Description: GNU Zip compressed data


- Paul Rockwell

  • APserver throw... Paul Rockwell
    • Re: APser... M.Hall
      • Re: A... Dr . Jürgen Sauermann via Bugs and suggestions for GNU APL
    • Re: APser... Dr . Jürgen Sauermann via Bugs and suggestions for GNU APL
      • Re: A... Paul Rockwell
        • R... Dr . Jürgen Sauermann via Bugs and suggestions for GNU APL
        • R... Paul Rockwell
        • R... Paul Rockwell

Reply via email to