[Ifeffit] Demeter-devel MacPorts Athena issues & work-around

Matt Newville newville at cars.uchicago.edu
Sun Jul 6 18:55:54 CDT 2014


On Sun, Jul 6, 2014 at 5:24 PM, Bruce Ravel <bravel at bnl.gov> wrote:

>
> Matt,
>
> You're right.  I was too grouchy.  Margaret Anne, I apologize if I was too
> mean-spirited in my emails over the weekend.
>
>
>
> On 07/06/2014 05:54 PM, Matt Newville wrote:
>
>> Wait, what?   What text string is configured to be only 256 characters?
>> Something must be very wrong with the Macports installation - this file
>> opens just fine for me, though I haven't tested it with the Macports
>> version.
>>
>> The "read_data()" command in ifeffit uses a line length of 2048
>> characters, and should not crash on a longer line, but truncate lines to
>> 2048 characters (silently, which is irritating when encountered, but not
>> as bad as crashing).     I've written and used thousands of data files
>> with comment and data lines longer than 256 characters.    I believe
>> there is (and should be) nothing in the code for reading data that sets
>> a limit as low as 256 characters (File names are allowed to be 512
>> characters!), and nothing that should cause a crash on larger lines.
>>
>> Of course it's fine to use a plugin for specific file types, and
>> probably wise to not rely of ifeffit's read_data() for really big files
>> (though, again, I regularly read files of 35 to 40 columns without a
>> plugin).   But this seems to me like its a Macports-only problem to me
>> that should be fixed.
>>
>
> I guess I explained it poorly, but it is not a MacPorts-only problem.
>
> It /opens/ just fine.  That's not the problem.
>
> It's a problem with iff_show, which Athena uses to fetch the names of the
> column labels after ifeffit reads the data file.  Here's what happens if
> you exercise iff_show by hand:
>
> bruce at atropos [demeter] > ifeffit
>  Ifeffit  1.2.11d Copyright (c) 2008 Matt Newville, Univ of Chicago
>                 command-line shell version 1.1 with GNU Readline
> Ifeffit> read_data (file="/home/bruce/Mn0214_7dMnO2_Header_exafsscan1.dat",
> group=a)
> Ifeffit> show @strings
>  $plot_devices  = /png /tpng /null /ps /vps /cps /vcps /xwindow /xserve
>  $plot_device   = /xserve
>  $group         = a
>  $commentchar   = #
>  $&build        = 1.2.11d Copyright (c) 2008 Matt Newville, Univ of Chicago
>  $&install_dir  = /usr/local/share/ifeffit
>  $column_label  = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
> 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
> 48 49 50 51 52 53 54 55 56 57
>  $column_label1 = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
> 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
> 48 49 50 51 52 53 54 55 56 57
>  $a_title_01    = S 1  exafsscan
>  $a_title_02    = C exafs_edge_energy 6.539
>  $a_title_03    = C exafs_region -150 -20 26 1 0 0 0
>  $a_title_04    = C exafs_region -20 34.1959 108 1 0 0 0
>  $a_title_05    = C exafs_region 34.1959 972.683 260 1 0 1 1.4
>  $a_title_06    = D Wed Feb 26 22:19:02 2014
>  $a_title_07    = T 4.58834  (Seconds)
>  $a_title_08    = G0 0
>  $a_title_09    = G1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 0 0 0 0 0
>  $a_title_10    = G3 0 0 0 0 0 0 0 0 0
>  $a_title_11    = G4 0
>  $a_title_12    = Q
>  $a_title_13    = P0 17.707645 -0.3425 33.862069 -0.80317213 -18.366667
> 0.175013 -0.175013 8.99922
>  $a_title_14    = P1 8.49884 8.74903 -5.0037582 8.74903 1.7763568e-14 0
> 3.5002457 9.4148
>  $a_title_15    = P2 -44.9992 -23.95 -30.75 97.52 19.252 -11.58 8.4175
> -2.25125
>  $a_title_16    = P3 -5.11125 1.4875 0.7325 1.5 85 0 -600
>  $a_title_17    = N 57
>
> At line 436 of file iff_show.f
> Fortran runtime error: End of record
> bruce at atropos [demeter] >
>
>
> Line 436 of iff_show is
>
>        write(messg,11)  s(1:k), ' = ', t(1:j)
>
> messg is defined just above that as character*256.  I interpreted this as
> attempting to put a 330 character string in a character*256 variable.  But,
> in truth, I did not examine the code all that closely.
>
> I suppose I could have worked on fixing Ifeffit, but the plugin took way
> less time.  And my time would be better spent making Demeter use Larch
> properly.
>
>
Or perhaps upgraded (see
https://github.com/newville/ifeffit/commit/0b3512552dd08a85d4d69cbd32b4e525e30f8a63
)?  One of the problems of using a deprecated and poorly supported library,
I suppose  -- the Fortran code does have many shortcomings, but such
crashes should definitely be addressed.

The MacPorts (and other versions) may want to build with the 1.2.12 source
code from github -- this isn't the only problem fixed in the past 6 years.

--Matt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://millenia.cars.aps.anl.gov/pipermail/ifeffit/attachments/20140706/6a231c98/attachment.html>


More information about the Ifeffit mailing list