Hi Paul,
It is also bug.
I think it's better to create tickets for both here:
https://sourceforge.net/p/open-cobol/bugs/
Regards,
Sergey
Hello,
the following small program
causes a
crash (Signal SIGSEGV) on Solaris (sparc). The same program runs
without
problems on Windows and shows the expected results.
prog.cob: 16: Attempt to
reference unallocated
memory (Signal SIGSEGV)
Abnormal termination - File
contents
may be incorrect
I used the gnu cobol branch 2.0
r470
IDENTIFICATION
DIVISION.
PROGRAM-ID.
prog.
DATA
DIVISION.
WORKING-STORAGE
SECTION.
01 XX.
02
XX-1 PIC X(4) VALUE "1234".
02
XX-2 PIC X(4) VALUE "5678".
01 P-XX-1
POINTER.
01 P-XX-2
POINTER.
LINKAGE
SECTION.
01 Y2
PIC X(4).
PROCEDURE
DIVISION.
SET
P-XX-1 TO ADDRESS OF XX-1
SET
P-XX-2 TO ADDRESS OF XX-2
SET
ADDRESS OF Y2 TO ADDRESS OF XX-1
SET
ADDRESS OF Y2 UP BY 4
IF
Y2 NOT = XX-2
DISPLAY "Test 2 '" Y2 "'"
END-DISPLAY
END-IF
IF
ADDRESS OF Y2 NOT= P-XX-2
DISPLAY "Pointer test failed"
END-IF
STOP
RUN.
The crash occurs in the first
memcpy
call of
cob_pointer_manip (cob_field *f1,
cob_field
*f2, const unsigned int addsub)
{
unsigned
char *tmptr;
memcpy
(&tmptr, f1->data, sizeof(void *));
if
(addsub) {
tmptr -= cob_get_int (f2);
}
else {
tmptr += cob_get_int (f2);
}
memcpy
(f1->data, &tmptr, sizeof(void *));
}
the following call to
cob_pointer_manip
in the generated C code shows the problem:
/* Line: 16
: SET : prog.cob
*/
cob_set_location (st_1, 16,
NULL,
NULL, st_2);
cob_pointer_manip (b_10,
(cob_field
*)&c_1, 0);
the variable b_10 is defined as:
/* LINKAGE SECTION (Items not
referenced
by USING clause) */
static unsigned char
*b_10 = NULL; /* Y2 */
but the cob_pointer_manip
function expects
a pointer to a cob_field structure and therefore f1->data
points to
nowhere.
During compilation I get the
following
warnings:
address@hidden:
~/pme-test/cob-address
$ cobc -g -x prog.cob
prog.c: In function 'prog_':
prog.c:124:3: warning: passing
argument
1 of 'cob_pointer_manip' from incompatible pointer type
prog.c.h:33:1: note: expected
'struct
cob_field *' but argument is of type 'unsigned char *'
The enclosed ZIP (crash.zip) file
contains
the sample program and the generated C source and config.log.zip
contains
the configure log file.
Some data about my solaris
system:
uname -a
SunOS sol10d 5.10
Generic_142909-17
sun4u sparc SUNW,Sun-Fire-V440
Any suggestions?
Best Regards
Paul Meinhardt
(Development)
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
open-cobol-list mailing list
address@hidden
https://lists.sourceforge.net/lists/listinfo/open-cobol-list
|