bugGNUstep - Bugs: bug #25243, Art backend Seg Faults

 
 

You are not allowed to post comments on this tracker with your current authentication level.

bug #25243: Art backend Seg Faults

Submitted by:  Stef <stefanbidi>
Submitted on:  Sun 04 Jan 2009 03:07:41 AM UTC  
 
Category: BackendSeverity: 3 - Normal
Item Group: BugStatus: Fixed
Privacy: PublicAssigned to: Fred Kiefer <FredKiefer>
Open/Closed: Closed

(Jump to the original submission Jump to the original submission)

Sun 28 Mar 2010 02:26:40 PM UTC, comment #14:

Seems to be working now. This can be closed.

Stef <stefanbidi>
Project Member
Sat 27 Mar 2010 10:44:59 PM UTC, comment #13:

is this still actual with the core version going to be released soon?
Maybe you should update your art version?

I tried to reproduce the bug on a plain linux, x86 system with libart 2.3.20 and all applications work well, including GOrm.

I'm using libffi on this machine, but have ffcall on others.

Riccardo Mottola <rmottola>
Project Member
Sun 01 Feb 2009 02:23:45 AM UTC, comment #12:

OK, I did that, here are the results... when it crashes I seg faults I get the following:

(gdb) p face
$1 = (FT_Face) 0x8b525150

The result of "b ftfont.m:144" is attached. Let me know if that's what you were looking for. It only stopped once at which point I got the value of "*pface".

(file #17368)

Stef <stefanbidi>
Project Member
Sat 31 Jan 2009 10:01:31 PM UTC, comment #11:

Now getting the backtrace is the hard bit and you managed that already :-)

To get gdb to print out the value of a locally visible variable you just type "p" and the name of that variable. In your case

p face

If you want to print the value of an object (which face isn't) you use "po".

Debugging the function is only slightly harder. First you need to get gdb to stop in that function. For this you use "b" to define a break point. I suggest using

b ftfont.m:144

This gets gdb to stop on an interesting line in that function. Next you use "p" to print out everything interesting and get gdb going again with "c". It will come back to that function multiple times and the last time is the most interesting one.

to get the value of face printed out here you will need to use

p *pface

Thank you for your effort.

Fred Kiefer <FredKiefer>
Project MemberIn charge of this item.
Sat 31 Jan 2009 08:54:26 PM UTC, comment #10:

Well, the only thing I can think of that is relevant about the machine is that it's a Compaq CQ50 laptop with nVidia card + proprietary nvidia driver (can't think of the version, if you think it's important, I'll check the version and see what happens if I upgrade/downgrade the driver).

Art has worked in the past on this same machine, but it was Slackware 12.1, so there might be somehthing there as well.

As for the debuging, you're going to have to help me out here. How do I make gdb print out the value of face (have to say, I don't even know what that is)? Also, how do I debug that function?

If you haven't noticed, all I really know how to do in gdb is get a backtrace.

Stef <stefanbidi>
Project Member
Sat 31 Jan 2009 07:57:52 PM UTC, comment #9:

The new back trace is about the same as the old one, but this
time the frames on the stack aren't corrupted.

I really don't understand what is going on. Just a few lines before this segmentation fault we are testing the value of face and at least it isn't 0. But what other value could it be? Could you please have gdb print out that value?

And what is different on your machine? On most others art is working perfectly. Could you please try to debug the function ft_get_face() and see if something goes wrong there?

Fred Kiefer <FredKiefer>
Project MemberIn charge of this item.
Sat 31 Jan 2009 01:43:32 AM UTC, comment #8:

Oops! Didn't realize there was more... I should have probably put it in a file and just attached it here.

#9 0xb794b5fb in +[NSObject new] (self=0xb7ed7360, _cmd=0x810c480)
at NSObject.m:1306
#10 0x0804f4e8 in -[GWorkspace createMenu] (self=0x8295138, _cmd=0x810c4b8)
at GWorkspace.m:149
#11 0x08050d1f in -[GWorkspace applicationWillFinishLaunching:] (
self=0x8295138, _cmd=0xb7e8c268, aNotification=0x8363e78)
at GWorkspace.m:328
#12 0xb793d79e in -[NSNotificationCenter _postAndRelease:] (self=0x81dfae0,
_cmd=0xb7b4abf8, notification=0x8363e78) at NSNotificationCenter.m:1111
#13 0xb793e0e2 in -[NSNotificationCenter postNotificationName:object:userInfo:]
(self=0x81dfae0, _cmd=0xb7b4ac00, name=0xb7f333a0, object=0x829cec8,
info=0x0) at NSNotificationCenter.m:1170
#14 0xb793df95 in -[NSNotificationCenter postNotificationName:object:] (
self=0x81dfae0, _cmd=0xb7e8bd20, name=0xb7f333a0, object=0x829cec8)
at NSNotificationCenter.m:1150
#15 0xb7c4df07 in -[NSApplication finishLaunching] (self=0x829cec8,
_cmd=0xb7e8be90) at NSApplication.m:969
#16 0xb7c4fbd3 in -[NSApplication run] (self=0x829cec8, _cmd=0x8106d50)
at NSApplication.m:1399
#17 0x0804d4be in main () at main.m:37

Stef <stefanbidi>
Project Member
Sat 31 Jan 2009 01:39:52 AM UTC, comment #7:

OK, here's the backtrace... it's different than the others, this is with today's SVN.

(gdb) r
Starting program: /usr/GNUstep/System/Applications/GWorkspace.app/GWorkspace
[Thread debugging using libthread_db enabled]
[New Thread 0xb700c6d0 (LWP 8635)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb700c6d0 (LWP 8635)]
0xb6f2a460 in -[FTFontInfo initWithFontName:matrix:screenFont:] (
self=0x83699f8, _cmd=0xb7f3d388, name=0xb6f5d33c, fmatrix=0xbfc456b4,
p_screenFont=0 '\000') at ftfont.m:297
297 for (i = 0; i < face->num_charmaps; i++)
(gdb) bt
#0 0xb6f2a460 in -[FTFontInfo initWithFontName:matrix:screenFont:] (
self=0x83699f8, _cmd=0xb7f3d388, name=0xb6f5d33c, fmatrix=0xbfc456b4,
p_screenFont=0 '\000') at ftfont.m:297
#1 0xb7e1514f in +[GSFontInfo fontInfoForFontName:matrix:screenFont:] (
self=0xb7f3d1a0, _cmd=0xb7ebd6d8, nfontName=0xb6f5d33c,
fmatrix=0xbfc456b4, screenFont=0 '\000') at GSFontInfo.m:140
#2 0xb7cd3b6b in -[NSFont initWithName:matrix:fix:screenFont:role:] (
self=0x83699b0, _cmd=0xb7ebd6b0, name=0xb6f5d33c, fontMatrix=0xbfc456b4,
explicitlySet=0 '\000', screen=0 '\000', aRole=12) at NSFont.m:802
#3 0xb7cd3868 in +[NSFont _fontWithName:size:role:] (self=0xb7ebd400,
_cmd=0xb7ebd600, aFontName=0xb6f5d33c, fontSize=12, aRole=12)
at NSFont.m:737
#4 0xb7cd29b6 in getNSFont (fontSize=12, role=6) at NSFont.m:360
#5 0xb7cd33aa in +[NSFont menuFontOfSize:] (self=0xb7ebd400, _cmd=0xb7eda048,
fontSize=0) at NSFont.m:589
#6 0xb7d1ab5f in -[NSMenuView initWithFrame:] (self=0x83689b0,
_cmd=0xb7ed77b0, aFrame=
{origin = {x = 0, y = 0}, size = {width = 0, height = 0}})
at NSMenuView.m:162
#7 0xb7d150a6 in -[NSMenu initWithTitle:] (self=0x8365550, _cmd=0xb7ed7770,
aTitle=0x822f758) at NSMenu.m:547
#8 0xb7d14bf3 in -[NSMenu init] (self=0x8365550, _cmd=0xb7b4f4c8)
at NSMenu.m:493

Stef <stefanbidi>
Project Member
Mon 19 Jan 2009 12:29:57 AM UTC, comment #6:

Could you please add the back trace for the new segmentation fault as well? It might just be the same as before, but how should I know...

Fred Kiefer <FredKiefer>
Project MemberIn charge of this item.
Sat 17 Jan 2009 05:33:17 PM UTC, comment #5:

Yes, it did! I just redirected the output of stderr, not stdout, to the file.

As for only using Helvetica it's only because there really aren't any available nfonts other than it and the stuff in the backbone CVS repo (at least that I know of).

Stef <stefanbidi>
Project Member
Sat 17 Jan 2009 02:55:42 PM UTC, comment #4:

Looks like you only have the default font for the art backend installed (Helvetica). Perhaps we should advertise better that there are additional fonts available as a separate package.

Did you again get a segmentation fault?

Fred Kiefer <FredKiefer>
Project MemberIn charge of this item.
Fri 16 Jan 2009 01:05:00 AM UTC, comment #3:

There you go!

(file #17270)

Stef <stefanbidi>
Project Member
Sun 04 Jan 2009 07:50:03 PM UTC, comment #2:

Looks liek this bug is rather similar to #25064. And for that bug I already failed to find out what is causing it :-(

This time I will do better and I have already added some more debugging code to the SVN repository. Could you please update GNUstep back to SVN and runn Gorm again with the parameter "--GNU-Debug=ftfont"? Please rpost the result to this bug report and maybe I will be able to figure out what is causing the problem this time.

Fred Kiefer <FredKiefer>
Project MemberIn charge of this item.
Sun 04 Jan 2009 03:24:05 AM UTC, comment #1:

Forgot to mention before that the cairo backend works just fine. No issues!

Stef <stefanbidi>
Project Member
Sun 04 Jan 2009 03:07:41 AM UTC, original submission:

Title says it all... this is the backtrace on Slackware 12.2:

bash-3.1$ openapp --debug Gorm
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-slackware-linux"...
(gdb) r
Starting program: /usr/local/lib/GNUstep/Applications/Gorm.app/Gorm
[Thread debugging using libthread_db enabled]
[New Thread 0xb6f2c6d0 (LWP 17890)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb6f2c6d0 (LWP 17890)]
0xb6e49763 in -[FTFontInfo initWithFontName:matrix:screenFont:] (
self=0x82ed288, _cmd=0xb7e708a8, name=0xb6e7c320, fmatrix=0xbfdc81a4,
p_screenFont=0 '\000') at ftfont.m:281
281 for (i = 0; i < face->num_charmaps; i++)
(gdb) bt
#0 0xb6e49763 in -[FTFontInfo initWithFontName:matrix:screenFont:] (
self=0x82ed288, _cmd=0xb7e708a8, name=0xb6e7c320, fmatrix=0xbfdc81a4,
p_screenFont=0 '\000') at ftfont.m:281
#1 0xb7d4609f in ?? () from /usr/lib/libgnustep-gui.so.0.16
#2 0x082ed288 in ?? ()
#3 0xb7e708a8 in ?? () from /usr/lib/libgnustep-gui.so.0.16
#4 0xb6e7c320 in _OBJC_INSTANCE_72 ()
from /usr/lib/GNUstep/Bundles/libgnustep-back-016.bundle/./libgnustep-back-016
#5 0xbfdc81a4 in ?? ()
#6 0x00000000 in ?? ()

Stef <stefanbidi>
Project Member

 

Attached Files
file #17368:  Art_SegFault.txt added by stefanbidi (949B - text/plain)
file #17270:  output.txt added by stefanbidi (4KiB - text/plain)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by rmottola (Posted a comment)
  • -unavailable- added by FredKiefer (Posted a comment)
  • -unavailable- added by stefanbidi (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 7 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Sun 28 Mar 2010 08:41:18 PM UTCFredKieferItem GroupNone=>Bug
      StatusNone=>Fixed
      Open/ClosedOpen=>Closed
    Sun 01 Feb 2009 02:23:45 AM UTCstefanbidiAttached File-=>Added Art_SegFault.txt, #17368
    Fri 16 Jan 2009 01:05:00 AM UTCstefanbidiAttached File-=>Added output.txt, #17270
    Sun 04 Jan 2009 07:50:03 PM UTCFredKieferAssigned toNone=>FredKiefer
    Sun 04 Jan 2009 03:24:05 AM UTCstefanbidiPrivacy(Error - Not Found)=>Public

    Back to the top


    Powered by Savane 3.1-cleanup1