* Re: Cygwin 64 problem
[not found] <CAGX=k3HczQGx=51xRwyKrwpKTMqaOVqxj+ud4UH=i1yCPAFGWQ@mail.gmail.com>
@ 2016-11-28 12:03 ` Ken Brown
2016-11-28 14:34 ` Duncan Roe
2016-11-30 3:01 ` Ken Brown
0 siblings, 2 replies; 5+ messages in thread
From: Ken Brown @ 2016-11-28 12:03 UTC (permalink / raw)
To: Girish Joglekar; +Cc: cygwin
[-- Attachment #1: Type: text/plain, Size: 1581 bytes --]
On 11/27/2016 9:03 AM, Girish Joglekar wrote:
> Hi Ken,
> Thank you for your reply on the Cygwin mailing list. I have created a
> slightly smaller test example smaller than what I had created in Feb.
> Attached is a tar file. After make insall if you run TEST.x and click
> the Open button, it gives segmentation fault.
> Hope you will be able to help.
> Thank you.
> Girish
Please keep the discussion on the mailing list so that people who might
be able to help will see it. I personally am not familiar with X11
programming, so I'm not one of those people.
I do have a few comments, however:
1. This may be slightly smaller than your previous program, but it is
still *very* far from a small test case. You really can't expect people
to debug a program of this size for you.
2. I suggest that you build with -Wall (as Marco already suggested in
the earlier discussion) and fix all the compiler warnings. I saw
several that need attention (aside from the many "unused variable"
warnings). It wouldn't hurt to also use -Wextra.
3. I also suggest that you use gdb to find out where the program is
crashing and why. You made a start on that in the discussion last
March, but you didn't follow through. (By the way, I recommend building
without optimization; otherwise you may not be able to get accurate
information about the crash from gdb.)
4. If, after the steps above, you still think the crash is due to a
Cygwin bug rather than a programming error, then try to extract from
your program a test case as small as possible that reproduces the crash.
Ken
[-- Attachment #2: test2.tar --]
[-- Type: application/octet-stream, Size: 686080 bytes --]
[-- Attachment #3: Type: text/plain, Size: 218 bytes --]
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Cygwin 64 problem
2016-11-28 12:03 ` Cygwin 64 problem Ken Brown
@ 2016-11-28 14:34 ` Duncan Roe
2016-11-28 16:19 ` Ken Brown
2016-11-30 3:01 ` Ken Brown
1 sibling, 1 reply; 5+ messages in thread
From: Duncan Roe @ 2016-11-28 14:34 UTC (permalink / raw)
To: cygwin
On Sun, Nov 27, 2016 at 11:02:29AM -0500, Ken Brown wrote:
> On 11/27/2016 9:03 AM, Girish Joglekar wrote:
> > Hi Ken,
> > Thank you for your reply on the Cygwin mailing list. I have created a
> > slightly smaller test example smaller than what I had created in Feb.
> > Attached is a tar file. After make insall if you run TEST.x and click
> > the Open button, it gives segmentation fault.
> > Hope you will be able to help.
> > Thank you.
> > Girish
>
> Please keep the discussion on the mailing list so that people who might be
> able to help will see it. I personally am not familiar with X11
> programming, so I'm not one of those people.
>
> I do have a few comments, however:
>
> 1. This may be slightly smaller than your previous program, but it is still
> *very* far from a small test case. You really can't expect people to debug
> a program of this size for you.
>
> 2. I suggest that you build with -Wall (as Marco already suggested in the
> earlier discussion) and fix all the compiler warnings. I saw several that
> need attention (aside from the many "unused variable" warnings). It
> wouldn't hurt to also use -Wextra.
>
> 3. I also suggest that you use gdb to find out where the program is crashing
> and why. You made a start on that in the discussion last March, but you
> didn't follow through. (By the way, I recommend building without
> optimization; otherwise you may not be able to get accurate information
> about the crash from gdb.)
>
> 4. If, after the steps above, you still think the crash is due to a Cygwin
> bug rather than a programming error, then try to extract from your program a
> test case as small as possible that reproduces the crash.
>
> Ken
I thought I would have a crack at this but immediately got the error:
testc.h:8:19: fatal error: Xm/Xm.h: No such file or directory
#include <Xm/Xm.h>
I thought /usr/include/Xm/ should come with motif, which I have installed.
What have I missed?
Cheers ... Duncan.
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Cygwin 64 problem
2016-11-28 14:34 ` Duncan Roe
@ 2016-11-28 16:19 ` Ken Brown
0 siblings, 0 replies; 5+ messages in thread
From: Ken Brown @ 2016-11-28 16:19 UTC (permalink / raw)
To: cygwin
On 11/27/2016 5:30 PM, Duncan Roe wrote:
> On Sun, Nov 27, 2016 at 11:02:29AM -0500, Ken Brown wrote:
>> On 11/27/2016 9:03 AM, Girish Joglekar wrote:
>>> Hi Ken,
>>> Thank you for your reply on the Cygwin mailing list. I have created a
>>> slightly smaller test example smaller than what I had created in Feb.
>>> Attached is a tar file. After make insall if you run TEST.x and click
>>> the Open button, it gives segmentation fault.
>>> Hope you will be able to help.
>>> Thank you.
>>> Girish
>>
>> Please keep the discussion on the mailing list so that people who might be
>> able to help will see it. I personally am not familiar with X11
>> programming, so I'm not one of those people.
>>
>> I do have a few comments, however:
>>
>> 1. This may be slightly smaller than your previous program, but it is still
>> *very* far from a small test case. You really can't expect people to debug
>> a program of this size for you.
>>
>> 2. I suggest that you build with -Wall (as Marco already suggested in the
>> earlier discussion) and fix all the compiler warnings. I saw several that
>> need attention (aside from the many "unused variable" warnings). It
>> wouldn't hurt to also use -Wextra.
>>
>> 3. I also suggest that you use gdb to find out where the program is crashing
>> and why. You made a start on that in the discussion last March, but you
>> didn't follow through. (By the way, I recommend building without
>> optimization; otherwise you may not be able to get accurate information
>> about the crash from gdb.)
>>
>> 4. If, after the steps above, you still think the crash is due to a Cygwin
>> bug rather than a programming error, then try to extract from your program a
>> test case as small as possible that reproduces the crash.
>>
>> Ken
>
> I thought I would have a crack at this but immediately got the error:
>
> testc.h:8:19: fatal error: Xm/Xm.h: No such file or directory
> #include <Xm/Xm.h>
>
> I thought /usr/include/Xm/ should come with motif, which I have installed.
>
> What have I missed?
libXm-devel
Ken
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Cygwin 64 problem
2016-11-28 12:03 ` Cygwin 64 problem Ken Brown
2016-11-28 14:34 ` Duncan Roe
@ 2016-11-30 3:01 ` Ken Brown
2016-12-04 15:59 ` Ken Brown
1 sibling, 1 reply; 5+ messages in thread
From: Ken Brown @ 2016-11-30 3:01 UTC (permalink / raw)
To: cygwin
[-- Attachment #1: Type: text/plain, Size: 4279 bytes --]
On 11/27/2016 11:02 AM, Ken Brown wrote:
> On 11/27/2016 9:03 AM, Girish Joglekar wrote:
>> Hi Ken,
>> Thank you for your reply on the Cygwin mailing list. I have created a
>> slightly smaller test example smaller than what I had created in Feb.
>> Attached is a tar file. After make insall if you run TEST.x and click
>> the Open button, it gives segmentation fault.
>> Hope you will be able to help.
>> Thank you.
>> Girish
>
> Please keep the discussion on the mailing list so that people who might
> be able to help will see it. I personally am not familiar with X11
> programming, so I'm not one of those people.
>
> I do have a few comments, however:
>
> 1. This may be slightly smaller than your previous program, but it is
> still *very* far from a small test case. You really can't expect people
> to debug a program of this size for you.
>
> 2. I suggest that you build with -Wall (as Marco already suggested in
> the earlier discussion) and fix all the compiler warnings. I saw
> several that need attention (aside from the many "unused variable"
> warnings). It wouldn't hurt to also use -Wextra.
>
> 3. I also suggest that you use gdb to find out where the program is
> crashing and why. You made a start on that in the discussion last
> March, but you didn't follow through. (By the way, I recommend building
> without optimization; otherwise you may not be able to get accurate
> information about the crash from gdb.)
>
> 4. If, after the steps above, you still think the crash is due to a
> Cygwin bug rather than a programming error, then try to extract from
> your program a test case as small as possible that reproduces the crash.
I've looked at this a little, and the crash occurs because of a bad value of a pointer to a font list. I'm attaching an annotated transcript of a gdb session that illustrates this. I didn't try to figure out where the bad pointer came from.
As a workaround, you can avoid the crash by removing from mosprshx.c all uses of spreadSheetFont, as in the following patch:
--- mosprshx.c~ 2016-11-27 08:46:12.000000000 -0500
+++ mosprshx.c 2016-11-29 14:58:23.114377500 -0500
@@ -29,8 +29,6 @@
0x00, 0x7c, 0x07, 0x1e, 0x0f, 0x07, 0x9e, 0x03, 0xfc, 0x01, 0xf8, 0x00,
0x70, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00};
-static char *spreadSheetFont = "-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1";
-
#ifdef __STDC__
static void mosprshCreateCheckMarkPixmap(Widget pushButton)
#else
@@ -208,11 +206,6 @@
if(isParentManaged)
XtUnmanageChild(parentFM);
- fromValue.addr = spreadSheetFont;
- fromValue.size = utStringLength(fromValue.addr) + 1;
- toValue.addr = NULL;
- XtConvertAndStore(parentFM,XmRString,&fromValue,XmRFontList,&toValue);
-
ac = 0;
XtSetArg(al[ac],XmNuserData,(XtPointer)spreadSheetSize); ac++;
spreadSheet = XmCreateForm(parentFM,"SpreadSheet",al,ac);
@@ -234,9 +227,6 @@
XtSetArg(al[ac],XmNtraversalOn,FALSE); ac++;
}
XtSetArg(al[ac],XmNcolumns,longestFixedColumnSize+1); ac++;
- if(toValue.addr) {
- XtSetArg(al[ac],XmNfontList,*(unsigned int *)toValue.addr); ac++;
- }
for(i1=0 ; i1<nRows ; i1++) {
sprintf(widgetName,"fixedColumnRow%d",i1);
fixedColumnTF[i1] = XmCreateTextField(fixedColumn,widgetName,al,ac);
@@ -264,9 +254,6 @@
if(cellSize > 0) {
XtSetArg(al[ac],XmNcolumns,cellSize); ac++;
}
- if(toValue.addr) {
- XtSetArg(al[ac],XmNfontList,*(unsigned int *)toValue.addr); ac++;
- }
for(j1=0 ; j1<nColumns ; j1++) {
sprintf(widgetName,"fixedRowColumn%d",j1);
fixedRowTF[j1] = XmCreateTextField(fixedRow,widgetName,al,ac);
@@ -294,9 +281,6 @@
XtSetArg(al[ac],XmNcolumns,cellSize); ac++;
XtSetArg(al[ac],XmNmaxLength,cellSize); ac++;
}
- if(toValue.addr) {
- XtSetArg(al[ac],XmNfontList,*(unsigned int *)toValue.addr); ac++;
- }
sprintf(widgetName,"column%drow%d",j1,i1);
variableRowAndColumnTF[loc] = XmCreateTextField(variableColumnFM[j1],widgetName,al,ac); loc++;
}
@@ -886,15 +870,3 @@
*nColumns = 0;
}
}
-
-
-#ifdef __STDC__
-char *moGetSpreadsheetFont()
-#else
-char *moGetSpreadsheetFont()
-#endif
-{
- return(spreadSheetFont);
-}
-
-
Ken
[-- Attachment #2: gdb.txt --]
[-- Type: text/plain, Size: 3445 bytes --]
Thread 1 "TEST.x" received signal SIGSEGV, Segmentation fault.
0x00000003fc68c4e5 in XmRenderTableCopy (table=0xaeeb0, tags=tags@entry=0x0,
tag_count=tag_count@entry=0)
at /usr/src/debug/motif-2.3.6-1/lib/Xm/XmRenderT.c:1709
1709 if (_XmRTDisplay(table))
[Crash here because the value of table is bogus. See below.
+bt
#0 0x00000003fc68c4e5 in XmRenderTableCopy (table=0xaeeb0,
tags=tags@entry=0x0, tag_count=tag_count@entry=0)
at /usr/src/debug/motif-2.3.6-1/lib/Xm/XmRenderT.c:1709
#1 0x00000003fc6831ba in XmFontListCopy (fontlist=<optimized out>)
at /usr/src/debug/motif-2.3.6-1/lib/Xm/XmFontList.c:637
#2 0x00000003fc657920 in InitializeTextStruct (tf=tf@entry=0x6000af730)
at /usr/src/debug/motif-2.3.6-1/lib/Xm/TextF.c:7295
#3 0x00000003fc657e67 in Initialize (request=request@entry=0x6000afb40,
new_w=new_w@entry=0x6000af730, args=args@entry=0xffffbd60,
num_args=num_args@entry=0xffffb320)
at /usr/src/debug/motif-2.3.6-1/lib/Xm/TextF.c:7817
#4 0x00000003fc469bb1 in CallInitialize (
class=0x3fc72c440 <xmTextFieldClassRec>,
req_widget=req_widget@entry=0x6000afb40,
new_widget=new_widget@entry=0x6000af730, args=args@entry=0xffffbd60,
num_args=num_args@entry=8) at /usr/src/debug/libXt-1.1.5-1/src/Create.c:226
#5 0x00000003fc46a65c in xtCreate (
name=name@entry=0xffffb950 "fixedColumnRow0", class=class@entry=0x0,
widget_class=widget_class@entry=0x3fc72c440 <xmTextFieldClassRec>,
parent=0x1fc5dd590, parent@entry=0x6000af0d0, default_screen=0x600052780,
args=args@entry=0xffffbd60, num_args=num_args@entry=8,
typed_args=typed_args@entry=0x0, num_typed_args=num_typed_args@entry=0,
parent_constraint_class=0x3fc720dc0 <xmFormClassRec>,
post_proc=post_proc@entry=0x3fc469bf0 <widgetPostProc>)
at /usr/src/debug/libXt-1.1.5-1/src/Create.c:416
#6 0x00000003fc46a906 in _XtCreateWidget (
name=name@entry=0xffffb950 "fixedColumnRow0",
widget_class=widget_class@entry=0x3fc72c440 <xmTextFieldClassRec>,
parent=parent@entry=0x6000af0d0, args=args@entry=0xffffbd60,
num_args=num_args@entry=8, typed_args=typed_args@entry=0x0,
num_typed_args=num_typed_args@entry=0)
at /usr/src/debug/libXt-1.1.5-1/src/Create.c:570
#7 0x00000003fc46abd9 in XtCreateWidget (name=0xffffb950 "fixedColumnRow0",
widget_class=0x3fc72c440 <xmTextFieldClassRec>, parent=0x6000af0d0,
args=0xffffbd60, num_args=8)
at /usr/src/debug/libXt-1.1.5-1/src/Create.c:589
#8 0x00000003fc658a81 in XmCreateTextField (parent=<optimized out>,
name=<optimized out>, arglist=<optimized out>, argcount=<optimized out>)
at /usr/src/debug/motif-2.3.6-1/lib/Xm/TextF.c:10645
#9 0x000000010040882d in mosprshCreateSpreadsheet (parentFM=0x6000acc60,
spreadSheetTitle=0x100421087 "Measuring Unit Specification",
rowNames=0x6000ab4f0, columnNames=0x6000ab4b0, cellSize=0,
mosprshCheckButtonCallback=0x0) at mosprshx.c:242
[...]
+p *table
$1 = (struct __XmRenderTableRec *) 0x56f700001ea1
+p *$
Cannot access memory at address 0x56f700001ea1
+f 2
#2 0x00000003fc657920 in InitializeTextStruct (tf=tf@entry=0x6000af730)
at /usr/src/debug/motif-2.3.6-1/lib/Xm/TextF.c:7295
7295 TextF_FontList(tf) = (XmFontList)XmFontListCopy(TextF_FontList(tf));
+p tf->text.font_list
$2 = (XmFontList) 0xaeeb0
[This is the bad pointer that was propagated to XmRenderTableCopy. I
didn't chase down where it came from.]
[-- Attachment #3: Type: text/plain, Size: 218 bytes --]
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Cygwin 64 problem
2016-11-30 3:01 ` Ken Brown
@ 2016-12-04 15:59 ` Ken Brown
0 siblings, 0 replies; 5+ messages in thread
From: Ken Brown @ 2016-12-04 15:59 UTC (permalink / raw)
To: cygwin, Girish Joglekar
On 11/29/2016 3:14 PM, Ken Brown wrote:
> I've looked at this a little, and the crash occurs because of a bad value of a pointer to a font list. I'm attaching an annotated transcript of a gdb session that illustrates this. I didn't try to figure out where the bad pointer came from.
I've done that now. There are three places in mosprshx.c where you cast a pointer to a pointer to an object of a different size. Interesting things happen when you dereference that pointer. The following patch gets rid of the crash:
--- mosprshx.c~ 2016-12-04 10:02:36.706325200 -0500
+++ mosprshx.c 2016-12-04 10:28:35.160038200 -0500
@@ -235,7 +235,7 @@
}
XtSetArg(al[ac],XmNcolumns,longestFixedColumnSize+1); ac++;
if(toValue.addr) {
- XtSetArg(al[ac],XmNfontList,*(unsigned int *)toValue.addr); ac++;
+ XtSetArg(al[ac],XmNfontList,*(XtArgVal *)toValue.addr); ac++;
}
for(i1=0 ; i1<nRows ; i1++) {
sprintf(widgetName,"fixedColumnRow%d",i1);
@@ -265,7 +265,7 @@
XtSetArg(al[ac],XmNcolumns,cellSize); ac++;
}
if(toValue.addr) {
- XtSetArg(al[ac],XmNfontList,*(unsigned int *)toValue.addr); ac++;
+ XtSetArg(al[ac],XmNfontList,*(XtArgVal *)toValue.addr); ac++;
}
for(j1=0 ; j1<nColumns ; j1++) {
sprintf(widgetName,"fixedRowColumn%d",j1);
@@ -295,7 +295,7 @@
XtSetArg(al[ac],XmNmaxLength,cellSize); ac++;
}
if(toValue.addr) {
- XtSetArg(al[ac],XmNfontList,*(unsigned int *)toValue.addr); ac++;
+ XtSetArg(al[ac],XmNfontList,*(XtArgVal *)toValue.addr); ac++;
}
sprintf(widgetName,"column%drow%d",j1,i1);
variableRowAndColumnTF[loc] = XmCreateTextField(variableColumnFM[j1],widgetName,al,ac); loc++;
Ken
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-12-04 15:59 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CAGX=k3HczQGx=51xRwyKrwpKTMqaOVqxj+ud4UH=i1yCPAFGWQ@mail.gmail.com>
2016-11-28 12:03 ` Cygwin 64 problem Ken Brown
2016-11-28 14:34 ` Duncan Roe
2016-11-28 16:19 ` Ken Brown
2016-11-30 3:01 ` Ken Brown
2016-12-04 15:59 ` Ken Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).