[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: evolution broken in sid



>>>>> On Mon, 18 Apr 2005 13:38:08 -0600, dann frazier <dannf@dannf.org> said:

  Dann> On Mon, 2005-04-18 at 11:56 -0700, David Mosberger wrote:

  >> >>>>> On Wed, 13 Apr 2005 09:57:53 -0600, dann frazier
  >> <dannf@dannf.org> said:

  Dann> Just a warning, the new evolution in sid is broken, and I
  Dann> haven't found the appropriate set of packages to downgrade to
  Dann> fix it yet:
  Dann> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=304437

  >>  Looks like this has already been taken care of.  Good. ;-)

  Dann> Well, it gets you to the next bug:
  Dann> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=304708

It's the same old Bohr bugs: failing to declare a function returning a
pointer.  The bugs causing the "reply" to crash are actually hiding in
evolution-data-server1.2:

 Function `camel_pstring_strdup' implicitly converted to pointer at camel-groupwise-folder.c:769
 Function `gtk_cell_renderer_text_new' implicitly converted to pointer at e-name-selector-dialog.c:141
 Function `gtk_hbox_new' implicitly converted to pointer at e-name-selector-dialog.c:415

but there is a similar bug in evolution-2.2 itself, which causes a
crash when clicking on "Tasks":

Function `e_categories_get_list' implicitly converted to pointer at e-tasks.c:603

Needless to say, ALL of these can be found trivially by running the
attached script on the build log.  So much time could be saved if only
Debian did this automatically (if only for 64-bit platforms)...

I'll send the patches to fix the crashes in separate mail.

	--david

<--- check-implicit-pointer-function -->
#!/usr/bin/env python

#
# Copyright (c) 2004 Hewlett-Packard Development Company, L.P.
#	David Mosberger <davidm@hpl.hp.com>
#
# Scan standard input for GCC warning messages that are likely to
# source of real 64-bit problems.  In particular, see whether there
# are any implicitly declared functions whose return values are later
# interpreted as pointers.  Those are almost guaranteed to cause
# crashes.
#
import re
import sys

implicit_pattern = re.compile("([^:]*):(\d+): warning: implicit declaration "
                              + "of function `([^']*)'")
pointer_pattern = re.compile(
    "([^:]*):(\d+): warning: "
    + "("
    +  "(assignment"
    +  "|initialization"
    +  "|return"
    +  "|passing arg \d+ of `[^']*'"
    +  "|passing arg \d+ of pointer to function"
    +  ") makes pointer from integer without a cast"
    + "|"
    + "cast to pointer from integer of different size)")
last_implicit_filename = ""
last_implicit_linenum = -1
last_implicit_func = ""

while True:
    line = sys.stdin.readline()
    if line == '':
        break
    m = implicit_pattern.match(line)
    if m:
        last_implicit_filename = m.group(1)
        last_implicit_linenum = int(m.group(2))
        last_implicit_func = m.group(3)
    else:
    	m = pointer_pattern.match(line)
        if m:
            pointer_filename = m.group(1)
            pointer_linenum = int(m.group(2))
            if (last_implicit_filename == pointer_filename
                and last_implicit_linenum == pointer_linenum):
                print "Function `%s' implicitly converted to pointer at " \
                      "%s:%d" % (last_implicit_func, last_implicit_filename,
                                 last_implicit_linenum)



Reply to: