[sac-dev] Patch to prevent an accidental close of the plotting window

Kuang He icrazy at gmail.com
Thu Sep 11 16:16:21 PDT 2008


Dear Brian,

On Thu, Sep 11, 2008 at 5:49 PM, Brian Savage <savage at uri.edu> wrote:
> Kuang He,
>
> I got your patches applied to code base and quickly checked them.
> I received five (5) bugs from you, correct ?

Yes, that is correct.

> - Ctrl-D - This appears to work correctly.
> - X11 Closing window - This appears to disable the "close" window button
>        At least on my mac.  Was this the intention.  Or did you want it to
> do something like "enddevice x"

That behavior is intended by George's patch since he said he did not
want the action to result in the close of all the windows, but
actually what I want it to do is something like "ed x".

When I was going through the archives of sac-dev yesterday, I found
that you did have provided a patch to do exactly that back in 2005,
but it seems that patch never got merged into the code base. Maybe we
could reuse that patch. What do you think?

http://www.iris.washington.edu/pipermail/sac-dev/2005-October/000000.html

> - evaluate bug - This works as well.  I think there is something else going
> on here
>        Try running the command twice,  The message is slightly different
> between the first and second time.

I've noticed this and also suspect that there is something else going
on here. The code snippets I've commented out in the post

http://www.iris.washington.edu/pipermail/sac-dev/2008-September/000086.html

do not seem to have double free problem to me. Yet commenting them out
can solve the problem. I don't know whether it is just glibc that is
being paranoid.

George mentioned the below to me in an email.

       Here is the Fortran code for that part of the program, perhaps
slightly more illuminating as to what it is doing:
       -----
         nchar=nint(flnum(j+1))
         iend=ibeg+nchar+2
         if(iend.le.mcmsg)then
           kmsg(ibeg:ibeg)=kval(1:1)
           call copykc(j+2,nchar,kmsg(ibeg+1:))
           kmsg(iend-1:iend-1)=kval(1:1)
           kmsg(iend:iend)=' '
           if(j.eq.jcom)iarrow=ibeg
           ibeg=iend+1
         endif
      -----
     Here, the call to copykc moves the text of the message from the
     tokenized parse text (indexed by j, and implicitly used by copykc)
     into the output message text.  Commenting that part out may fix a
     double free, but it also eliminates the message!  However, it
     looks like the calling sequence for copykc is different, so there
     might have been subsequent changes to the C code.

I don't know whether you have the history of that (perhaps quite old)
change in the C code in the CVS. If you do, we might be able to figure
out what is going on.

> - sachistory - Easy fix, but important
> - tolower/toupper - This needs to be pulled out and checked for at
> ./configure time
>
> Side note:
> When you compile with the --enable-readline does it actually use the
> readline library or a libedit library.
> If you are using a readline library, could you check running sac within a
> script to see how it behaves.

Yes, when I compiled with --enable-readline, it did end up with using
readline library instead of libedit.

$ ldd $HOME/bin/sac | grep readline
        libreadline.so.5 => /lib/libreadline.so.5 (0xb7e66000)

I tried to run sac within a shell script, and it works OK.

$ cat run
#!/bin/sh
sac tt

$ cat tt
fg seis
w test
quit

$ rm test && ./run
 SEISMIC ANALYSIS CODE [09/08/2008 (Version 101.2)]
 Copyright 1995 Regents of the University of California

$ ll test
-rw-rw-rw- 1 icrazy icrazy 4.6K Sep 11 18:44 test

However, if I feed something to SAC through redirection, the one
compiled with libedit works OK, but the one compiled with readline has
the following problem.

$ sac tt
[ ... Works OK ... ]

$ sac < tt
 SEISMIC ANALYSIS CODE [09/08/2008 (Version 101.2)]
 Copyright 1995 Regents of the University of California

SAC> readline: readline_callback_read_char() called with no handler!
Aborted

Best regards,

-- 
Kuang He
Department of Physics
University of Connecticut
Storrs, CT 06269-3046

Tel: +1.860.486.4919
Web: http://www.phys.uconn.edu/~he/


More information about the sac-dev mailing list