Dear gnuplot developers, I'm very amused, that the old bug, which I've found ca one year ago (and reported to you) still exists. Below I attach my bug report. The line numbers has changed in the new version, but the bug's nature and the cure is still the same. I attach the gnuplot_bug.tgz file, which demonstrates the problem. It is really tiring to change the gnuplot source and recompile it after each upgrade :-(.
Below follows the bug description and the fix: Subject: SOLVED !!! Problems with "pslatex" terminal in gnuplot beta347 (pre3.6) in Debian Linux 2.0 (hamm) From: Wojciech Zabolotny;[EMAIL PROTECTED]; Date: Sun, 2 Aug 1998 01:12:29 +0200 Hi All! I've just solved the problem desribed in my previous message. It was not related to debian. There is really a bug in the gnuplot source. I've sent my solution to the gnuplot team, but I would like to forward it to this group too (and to package's mantainer), to allow for correction of debian gnuplot package. Wojtek Zabolotny [EMAIL PROTECTED] ---------- Forwarded message ---------- Date: Sun, 2 Aug 1998 01:01:58 +0200 (EEST) From: Wojciech Zabolotny <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Subject: Problems with "pslatex" terminal in gnuplot beta347 (pre3.6) in Debian Linux 2.0 (hamm) (SOLVED !!!) Hello gnuplot developers! I have performed some additional experiments with the gnuplot, and my data. I've linked the gnuplot with "electric-fence" library to find the instruction which overwrites the memory. Below I present the output given by gdb after the failure: gnuplot> set term pstex auxfile Terminal type set to 'pstex' Options are 'monochrome dashed rotate auxfile' gnuplot> set output "phd_w4_s3_l10_wzneur.nsts.tex" gnuplot> load "phd_w4_s3_l10_wzneur.nsts.gnuplot" Program received signal SIGSEGV, Segmentation fault. 0x80a7cae in PSLATEX_init () at term/pslatex.trm:204 204 strcpy(PSLATEX_psfile + (dotIndex-outstr) + 1,"ps"); (gdb) bt #0 0x80a7cae in PSLATEX_init () at term/pslatex.trm:204 #1 0x808f7ae in term_init () at term.c:325 #2 0x80552b4 in do_plot (plots=0x40120fb8, pcount=3) at graphics.c:1165 #3 0x80779c2 in eval_plots () at plot2d.c:1335 #4 0x80743a7 in plotrequest () at plot2d.c:332 #5 0x804b84f in command () at command.c:539 #6 0x804afd1 in do_line () at command.c:287 #7 0x807209c in load_file (fp=0x4011af98, name=0xbffff96c "phd_w4_s3_l10_wzneur.nsts.gnuplot", can_do_args=0) at misc.c:1042 #8 0x804bd70 in command () at command.c:624 #9 0x804afd1 in do_line () at command.c:287 #10 0x804af4f in com_line () at command.c:262 #11 0x8073c25 in main (argc=1, argv=0xbffffda0) at plot.c:439 When I've analyzed the source in pslatex.trm, I've found following lines: PSLATEX_psfile = gp_alloc(dotIndex - outstr + 3, "pslatex aux filename"); if (PSLATEX_psfile) { strncpy(PSLATEX_psfile, outstr, dotIndex-outstr+1); /*including .*/ strcpy(PSLATEX_psfile + (dotIndex-outstr) + 1,"ps"); The problem is, that "strcpy" instruction writes three bytes: 'p','s' and \0. The last byte is written after the end of PSLATEX_psfile buffer, overwriting another variable... :-( I have changed the 201st line in pslatex.trm in the following way: PSLATEX_psfile = gp_alloc(dotIndex - outstr + 4, "pslatex aux filename"); Now everything works fine ! :-) Wojciech Zabolotny [EMAIL PROTECTED] -- Wojciech M. Zabolotny http://www.ise.pw.edu.pl/~wzab <--> [EMAIL PROTECTED] http://www.gnupg.org Gnu Privacy Guard - protect your mail & data with the FREE cryptographic system
gnuplot.bug.tgz
Description: GNU Unix tar archive