Version 2 (modified by branden, 10 years ago) (diff)


Earthworm Release Notes V4.1

(January 20, 2000)



This program works only under Solaris. It reads the headers of all the SAC files in the current directory and creates a Hypoinverse archive file. This archive file can be used to relocate the event. This program was written some time ago by someone else (I presume Lynn Dietz). It has now been made into an earthworm utility program. LV 8/12/1999


This program works only under NT. It listens to serial line communication from the pucks which collect tide data. It connects to a COM port (given the serial communication parameters from the config file) and asks each puck for its reading every WaitTime seconds. After NumSamples for an SCN have been collected, a new TYPE_TRACEBUF message is created and written to the OutRing stamped with the SCN code given in the configuration file. Besides creating earthworm messages, this module can write tide readings to the screen and to files. The format of the output files is taken from ATWC. This program is part of the ATWC contributed software. LV 8/2/1999


This module implements a general-purpose FIR filter for trace data. Low-pass, high-pass, multi-band-pass and notch filters can be specified using simple commands in the configuration file. Filter coefficients are computed using the Remez Exchange algorithm to give an optimal equiripple filter. The filter zeroes are logged on startup. Using the "TestMode" command in the config file, the module will compute coefficients, log the zeroes and then quit. Uses many of the components in the revised decimate module. PNL 10/27/1999


Three tools: inspect_tank, read_index and read_struct. These three tools are to help with problems in wave_serverV tank, index and structure files. These are primarily for development work. PNL, 1/12/2000


Writes continuous sac files given a list of Station, Component, Network names. This software is contributed by University of Utah Seismograph Station.



Renamed compression/decompression routines supplied by Boulder Real Time Technologies to brtt_gencompress and brtt_genuncompress. By suggestion from Kent Lindquist -- apparently the official releases of these routines are part of the Antelope software, so using their generic names causes compilation problems whenever Antelope libraries have to be linked in. LV 12/27/1999


  • Modified the sac putaway routine to enable correct creation of SAC files on NT. Since there are (I think) no SAC tools for NT, the OutputFormat should be set to sparc. Care should be taken when transferring files between NT and Solaris (ASCII mode in ftp works best). LV 12/20/1999.
  • Modified to correctly create PCSUDS format files under NT.


Added the "MaxTrigMsgLen" command to set the size of the buffer used to write TYPE_TRIGLIST2K messages to. This buffer is allocated at startup (previously, a minimal buffer was allocated on startup, then was realloc'd in 1024 byte increments as necessary). If a triglist message would overflow this buffer, carlsubtrig will stop writing to the buffer, but will continue to write the complete triglist message to its log. It will also send this error message to statmgr: "incomplete triglist msg sent for eventid:%d". Also, if the event triggered enough subnets such that a wildcard would be added to the triglist message, the wildcard is now written at the beginning of the message instead of the end (just in case that big triglist message would overflow the buffer, the wildcard will always be included!). LDD 8/6/1999

export_generic/ export_scn

Fixed a memory leak in export.c. Previously, each thread allocated its own working buffer(s). But when export did a internal restart, it would kill the threads, never freeing the memory. The threads would be restarted, malloc another working buffer... Enough internal restarts and export would suck up all available memory. Changed so that all working buffers are allocated in the main thread, before any other threads are started. All buffers are freed when the program exits. LDD 9/7/1999


Major revision. Decimate is now a multi-stage filter-decimator. The filter coefficients are computed based on the decimation rate, using the Remez Exchange algorithm. Since each channel requires several buffers to be allocated at startup, channels must be explicitly listed in the config file (no wildcards.) Thus it didn't seem convenient to keep Lucky's cool rewrite rules: Now output SCNs get listed explicitly with the input SCNs. PNL 10/18/1999

read_arc.c (part of libsrc/util)

  • Corrected the reading for coda length (was reading the raw coda; now reads the eqcoda-corrected coda) and added the reading of coda weight.
  • Added codawt to Hpck structure in read_arc.h. PNL, 10/20/1999 Added reading of preferred magnitude fields from the summary line. Added labelpref,Mpref,wtpref to the Hsum structure in read_arc.h. LDD 11/08/1999


Removed "fix4_3.3" from the default target of the makefile. No one should need this program any more; it was only for converting tank structures from an old format to a new one provided by v3.3. PNL, 10/28/1999


Fixed bug that prevented hostname lookup from working on NT. The problem was that SocketSysInit?() was not being called before the hostname lookup occurred. Now you can give getmenu a hostname or and IP address (followed by ":portnumber") on NT as well as Unix. PNL, 11/19/1999


It was such that if the connection to import broke while a message was being sent, that that message would be lost. Fix is to save the message until it was sent ok (as per socket return value), and re-send the message after closing and re-opening the connection. Alex 11/20/99


Added two optional parameters:

  • PrePickTime (default=15)
  • PostCodaTime (default=10)

which specify how much data to save preceding the p-pick, and following coda cutoff. Alex 11/24/99


Changed logit message about "Descriptor file of statmgr not loaded". This error is also generated when the EW_INSTALLATION environment variable doesn't match instId in statmgr.desc. PNL, 11/24/99


Changed GIF file names so they would be the same on local and (optional) remote machines, as well as in the HTML file. HTML file will now list separate GIFs when less than 24 hours is plotted on one GIF. Fixed bug that caused core-dumps when socket debugging was turned on. Added optional command to name the HTML file. PNL, 11/29/99


Added LTAtime as a configurable parameter, as requested by Tom Murray. Previously this was hardwired to 8 seconds. This is an optional parameter, defaults to 8 seconds. PNL, 1/10/00


  • New version grabbed from Fred Klein 1/11/00.
  • Fixes a bug which had caused a core dump or crash with an error about writing to unit 5. Symptom was known to occur on startup when a crustal velocity model file (CRH command) contained a blank line at the end. Now hyp2000 writes an error message an exits.
  • Also fixes bugs that are related to shadow cards. Used to write Pmag information to summary shadow whether the mag was being calculated or not, and wrote Pmag info to phase shadows sometimes when not necessary.
  • Also has a new command, FIL, which determines the format of the input file set with the PHS command. It discriminates between hypo71 phase, *.cod and *.arc files (with and without shadow cards, both old and y2000 formats). It also warns you if you are reading a pre-y2000 file in y2000 mode, and vice versa. It sets the correct formats with the COP and CAR commands. The FIL code also senses the 4 different summary formats and tells you what the file is, but of course warns you that you should not be trying to locate a summary file. The FIL command should be useful interactively, but it is not necessary for real-time use. LDD, 1/11/00


Edited makefiles to work with the newest version of hyp2000 (new command in new source file). LDD, 1/11/00

socket_ew_common.c (in libsrc/utils)

accept_ew now sets the new socket to nonblocking mode as required for sockets used by socket_ew_common; previously it was assumed that this property was inherited from the original socket. Most functions now properly react to select() errors; previously they were ignored. Most function comments have been updated to be more meaningful. Fixed bug in accept_ew where it would close the old socket if no connection was accepted without the timeout interval. PNL, 1/12/2000

export: (scn and generic)

  • Export no longer quits when SocketTimeoutLength is less than RcvAliveInt; now it sets SocketTimeoutLength? to 1500 times RcvAliveInt and logs it. (RcvAliveInt is in seconds, SocketTimeoutLength is in milliseconds.) Removed some unneeded if's from binEscape() to improve efficiency. Moved start of MessageStacker to after successful accept_ew call, to reduce number of lapped messages in queue. Removed flush of internal queue. Export now uses a timeout for the accept_ew call. The interval is the internal heartbeat interval, so statmgr doesn't complain when export isn't connected. If a connection is not made in the timeout interval, export sends a complaint but otherwise keeps listening and beating its heart. When a connection is made, export sends a "connected" message only if it complained earlier. This adds two new error messages to the descriptor file.
  • When export has a problem sending or receiving, it kills the socket threads, closes and reopens the socket and tries another connection.
  • The MessageStacker does not get killed in the recycling.
  • Fixed a bug where BinSize? was not being set to zero after a message was successfully sent. This bug resulted in one message being resent when the SocketSender restarted. PNL 1/13/2000

wave_serverV: Added optional parameter "ClientTimeout?", used in

serverThread. When no traffic is heard from a connected client in this timeout interval, the socket is closed and the serverThread exits. Previously, wave_serverV.d stated that this was the function of SocketTimeout?, which it was not. Fixed bug in shutdown sequence where KillThread? was being called with uninitialized values. Sometimes this would kill the main thread, aborting the shutdown sequence. This may have been the cause of Menlo's wave_serverV hanging on shutdown. Cleaned up settings of ServverThreadInfo?.Status in server_thread.c and wave_serverV.h. Small change to index_util.c to add some detail to logit error entry in BuildLIndex(). Reformatted comments at head of wave_serverV to make them easier to read. PNL, 1/12/2000

rcv_ew and vdl_ew: Both modules have been updated to the newest version of

rcv and vdl from Dave Ketchum. BB 1/16/2000

CHANGES TO CONFIGURATION FILES and DESCRIPTOR FILES: carlsubtrig.d: Added "MaxTrigMsgLen? nbytes" command to control the size

of the output buffer.


Added "LTAtime" command to set nominal time of LTA average. This is an optional parameter, defaults to 8 seconds.

carlsubtrig.desc: Added a new error code for the case when the triglist

message would overflow the output buffer:

err: 23 nerr: 1 tsec: 0 page: 10 mail: 20 text: "Incomplete triglist message sent."

adsend.desc: Added a new error code:

err: 7 nerr: 1 tsec: 0 page: 0 mail: 10 text: "Fewer samples were obtained than requested."

decimate.d and decimate.desc: Several new commands due to the extensive

changes in the module.

heli_standalone: Added optional command to name the HTML file; default name is "index.html". Added description of optional "Target" command to conf file. This option was always available, but left out of the working config file.

export_*.desc: two new error messages to report slow connections.

wave_serverV.d: optional command ClientTimeout?; corrected comments for


KNOWN BUGS or DEFICIENCIES: In Windows NT, the time resolution of sleep_ew() is about 16 msec (one clock tick). On Solaris, the resolution is about 10 msec. This is a problem for ringtocoax, since packet delays need to be set to a few milliseconds.

Automatic restarts of adsend (using the "restartMe" line in the descriptor file) can cause an NT system to hang. Therefore, you should never use the autorestart feature with adsend, but you should bring down the entire Earthworm system if adsend needs to be restarted.

carlsubtrig: Occasionally (once every few months in Menlo Park), the event id gets reset to zero. This smacks of a memory clobber, but we haven't tracked it down yet. This has been observed in v4.0 carlsubtrig on x86 Solaris. LDD 9/28/1999

threads functions: The KillThread? function on WindowsNT and Solaris terminate the thread without ensuring that no mutexes are held. If a thread holds a mutex when it dies, no other thread can get that mutex. PNL 1/12/2000

The Solaris version of SendMail? calls popen to invoke the Mail program. If the mail program can't be found, Solaris prints the message:

sh: /usr/ucb/Mail: not found

The SendMail? function returns 0 (no error), instead of -1 (error), so the calling program can't tell that an error occurred.