Hi Alan,
The crash I reported before occurs somewhere between the call to
interface_plparseopts(...) and max_cstring_length:
$ ./x01f -dev wingcc
pl_parse_dynamic = T
argv before call to plparseopts(..., PL_PARSE_SKIP)
i = 0, argument = ./x01f
i = 1, argument = -dev
i = 2, argument = wingcc
In plparse_opts_dynamic
After character_array_to_c
After interface_plparseopts
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:
That limits the possibilities considerably ;). I have narrowed it further to
the call of max_cstring_length, but of course this is merely the location where
it is noted something is wrong, not necessarily the cause.
Regards,
Arjen
From: Arjen Markus
Sent: Friday, January 05, 2018 9:10 AM
To: 'Alan W. Irwin'
Cc: PLplot development list
Subject: RE: Command-line parsing improvements for both C and Fortran
Hi Alan,
> -----Original Message-----
> From: Alan W. Irwin [mailto:ir...@beluga.phys.uvic.ca]
> Furthermore, I would appreciate you following the parsing testing advice in
> README.release section 2.7.2 to discover which parts of this API work for
> gfortran
> with version > 4.9.2 (e.g., for your Cygwin and MinGW-w64/MSYS2 platforms) as
> well as the ifort compiler you have access to (and possibly the nagfor
> compiler you
> have arranged access to in the past).
>
> By the way, I am not sure of the correct terminology for character arrays
> that have
> both length and size allocated. I refer to them above as "dynamic length and
> size",
> but I have also seen the term "deferred-length" used for character strings
> with
> allocated length.
>
I did the tests yesterday and found quite some problems with the dynamic case,
but also with the C example.
First the C example:
"x01c -dev wingcc" complains that I did not give the value for the -dev option.
If I give other options like "a b c", I get complaints that these are unknown.
If I run "x02c -dev wingcc", all works as usual.
$ ./x01c -dev wingcc
Argument missing for -dev option.
Usage:
./x01c [options]
x01c options:
[-pl_parse_skip] [-locate] [-xor] [-font number] [-save filename]
PLplot options:
...
Then the Fortran example:
- With the static-character-length, allocatable array option, all works,
also for the static-character-length, fixed-size array option. Surprisingly, I
can specify "-dev wingcc" and the window pops up immediately. This is for both
gfortran 6.4.0 and Intel Fortran 2015.
- However, with both compilers the deferred-character-length,
allocatable array option fails miserably. The result is a coredump like the one
you have seen with the older version of gfortran.
My conclusion therefore is that there is something wrong with the code. I have
not been able to figure out yet what is wrong - which part, but I will try to
do so today, using a few strategic print statements to at least find the point
where things go awry.
(A minor pleasant surprise is that maybe after correction the code will work
for gfortran 4.x as well.)
Regards,
Arjen
DISCLAIMER: This message is intended exclusively for the addressee(s) and may
contain confidential and privileged information. If you are not the intended
recipient please notify the sender immediately and destroy this message.
Unauthorized use, disclosure or copying of this message is strictly prohibited.
The foundation 'Stichting Deltares', which has its seat at Delft, The
Netherlands, Commercial Registration Number 41146461, is not liable in any way
whatsoever for consequences and/or damages resulting from the improper,
incomplete and untimely dispatch, receipt and/or content of this e-mail.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel