Update to Roadshow version 1.13 (2017-05-14)
1. Why update Roadshow?
Roadshow version 1.12 was released in October 2016. In the time since the
release bugs have surfaced which need to be addressed, most notably random
crashes caused by bugs in the handling of timer.device operations as well as
memory shortage issues which become more pronounced the longer you run
The Roadshow 1.13 update released on May 2nd, 2017 added an updated "ping"
command which could crash if you did not use the "-t" option to specify a
2. How to update Roadshow?
An installation script is provided with this package which will update
Roadshow version 1.12 to version 1.13. The "ping" command bug introduced
in Roadshow version 1.13 as released on May 2nd, 2017 will be fixed, too.
Please note that you cannot directly update Roadshow versions 1.8 or 1.11 to
version 1.13. If you still have Roadshow version 1.8 installed, then you
should first update it to version 1.11 and then to version 1.12. Likewise, if
you have version 1.11 installed, you will first need to update it to version
The installation script is called "Update_Roadshow" and requires the
"Installer" program. Start the by double-clicking on the "Update_Roadshow"
icon and follow the instructions given.
The script will figure out which Roadshow software is installed on your system
boot partition, and it will show you which Roadshow version components need to
be updated to Roadshow version 1.13. Note that this update can also be applied
to the Roadshow demo version which you may have installed.
It is safe to start the installation script even if you have already updated
It is safe to start the installation script even if you have Roadshow versions
1.8 or 1.11 installed, in which case no changes will be made: please use the
Roadshow 1.11 update script first, followed by the 1.12 update script, then
finally restart the Roadshow 1.13 update script.
If no software is in need of updating, then the installation script will say
so and exit. Otherwise, it will proceed to apply the updates and prompt you to
restart your Amiga when it has finished.
3. Where to find the updated documentation?
To keep this update archive short, the reference documentation has not been
included it in. You might want to check out the Roadshow 1.13 demo archive,
which contains all the updated documentation files.
4. What else is provided?
Tomasz Potrykus contributed new localization files for the Polish language.
Also provided is the source code to the "ced-patch" program, as used by the
installation script. You can find it in the "Extras" drawer.
5. What has changed?
Here is the list of changes, as copied from the Roadshow "ReadMe" file:
Roadshow 1.13 (28.4.2017)
- Tomasz Potrykus provided Polish localization files for Roadshow,
"bsdsocket.library", "usergroup.library", "ppp-ethernet.device" and
"ppp-serial.device". Thank you very much!
- The "ping" command sports a new switch which controls how many packets
should be sent ("-c"). This parameter now also implies a test to see for how many
packets sent there were matching responses. If fewer responses were received
than there were packet sent, "ping" will now exit with return code 5, which
can be tested for in shell scripts with "if warn .. endif".
Further switches have been added which control how long packets should be
sent before the program exits ("-t" and "-o").
- Fixed several bugs in "bsdsocket.library", the "SampleNetSpeed" and
"ppp_sample" programs all related to the same problem:
combining GetMsg() and WaitIO() is unsound and may lead to memory corruption
and seemingly random crashes. You either should use GetMsg() or WaitIO(),
but not both in the same context. Thanks go to Sebastian Bauer for finding
the problem and convincing my stubborn self to take this issue more
- The "ConfigureNetInterface" command tested the wrong parameter when checking
the DHCPUNICAST/K parameter. Fixed.
- The 68020+ builds of "bsdsocket.library", "ppp-ethernet.device" and
"ppp-serial.device" no longer crash when opened on plain 68000 or 68010
systems. They now just fail to open at all. I added these tests because of
problems with the Roadshow installation script which were caused by the CPU
type test to mistakenly offer the option to install the 68020+ builds on
plain 68000 or 68010 systems.
- Updated the Roadshow installation script in order to make the test for the
CPU type more robust. It turned out that the "(patmatch ..)" function in
versions of the "Installer" tool prior to V43 does not work as documented.
In fact, that function barely works at all. This problem broke the old
installation script. The new installation script now tests if the CPU type
is "68000" or "68010" in a simpler fashion.
- The "bsdsocket.h" and "usergroup.h" inline header files for use with GCC 68k
have been rebuilt using fd2pragma 1.264 because the versions built with
fd2pragma 1.171 were reported not to work correctly. These rebuilt versions
are now part of the SDK. Thanks go to Anders Ali Lindgren for reporting the
- The "TCP:" handler leaked memory whenever it was opened, 144 bytes to be
precise. Thanks go to Patrik Axelsson who detected the problem and provided
a test case!
- Data received by an open connection and which is never read can accumulate a
lot of memory over time. While the TCP/IP stack will eventually signal to
the remote that the data has not been read by the client yet, so much memory
may have been allocated to hold it that your system runs out of free memory
first. Due to performance considerations, and also because it made the data
reception from the network interface simpler, Roadshow always allocates a
"cluster" of 2048 bytes for each inbound packet, and the received data
remains in that "cluster" until it has been processed, even if only 40 bytes
of memory would have been sufficient to keep it, for example. This can be
problematic in the long run when 20 Megabytes of memory have piled up which
contain only some 32 Kilobytes of unread data.
To address this quirk, new options have been added to the "RoadshowControl"
command. "RoadshowControl set if.receive.useclusters = 0" will make Roadshow
store incoming data using as little free memory as possible, at the expense
of slightly higher processing effort. In this mode the TCP/IP stack should
run much more stable in the long term.
Again, Patrik Axelsson found the problem, provided a test case and tested
the updated bsdsocket.library version. Thank you very much!
- Both the "ping" and "traceroute" commands show greater accuracy when
measuring the lengths of time intervals. As Patrik Axelsson demonstrated,
the measurements taken could be very coarse on the Amiga 2000, using
timer.device version 39. The new measurement method is the most accurate
which the Amiga operating system permits. Again, thanks go to Patrik
for finding the problem and for providing a test case!
- The wget command no longer gets itself into trouble when too little shell
stack space is available. Also, the transmission rate calculation finally
works as intended. The problem was with how the length of time intervals
was calculated, which assumed that the number of microseconds in each
time stamp was stored as a signed number. The processing of the short
form command options (e.g. "-q" for "--quiet") never worked correctly
either, with a bug in clib2 causing the problem.
Both the stack space and the short form command option problems were
reported by Patrik Axelsson. Thank you very much!
ping 4.13 (3.5.2017)
- The main ping loop could wind up checking the state of the
timeout request, even though it had never been used. This
had repercussions because it was then followed by a WaitIO()
call on the timerequest, which implies a Remove(), triggering
an Enforcer hit. Thanks go to Patrik Axelsson for spotting
- The average round-trip time printed is no longer rounded to
microsecond precision. The rounding had curious side-effects when
printing the average round-trip time for a single packet,
which did not equal the minimum and maximum round trip
- All trip times are now printed with a fixed number of digits
(three) following the decimal point. Also, the trip time is
always printed as a series of digits and the decimal point,
never in scientific notation (mantissa with exponent).
- An invalid "-t" option value is no longer ignored, but results
in an error message being printed and the ping command exiting
with a failure code set.