bug-indent
[Top][All Lists]
Advanced

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

Segfault on Comment Line


From: Neil Tiffin
Subject: Segfault on Comment Line
Date: Sun, 17 May 2009 08:15:37 -0500

indent 2.2.9 and 2.2.10 are both segfaulting on a comment line and in the same place.

Below is part of both the resultant file and the source file. The full source file is at

        
http://code.google.com/p/rpostgresql/source/browse/trunk/RPostgreSQL/src/RS-PostgreSQL.c

When run under debug the following backtrace is produced

MBP:src nt$ gdb --args /Users/nt/Downloads/indent-2.2.10/src/indent -- verbose -br -i4 -nut --line-length120 --comment-line-length120 --leave- preprocessor-space -npcs RS-PostgreSQL.c GNU gdb 6.3.50-20050815 (Apple version gdb-962) (Sat Jul 26 08:14:40 UTC 2008)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-apple-darwin"...Reading symbols for shared libraries .... done

(gdb) r
Starting program: /Users/neiltiffin/Downloads/indent-2.2.10/src/indent --verbose -br -i4 -nut --line-length120 --comment-line-length120 -- leave-preprocessor-space -npcs RS-PostgreSQL.c
Reading symbols for shared libraries +++. done
option: br
option: i
option: nut
option: l
option: lc
option: lps
option: npcs
indent: RS-PostgreSQL.c:139: Warning:Line broken 2
indent: RS-PostgreSQL.c:140: Warning:Line broken 2
indent: RS-PostgreSQL.c:141: Warning:Line broken 2
indent: RS-PostgreSQL.c:142: Warning:Line broken 2
indent: RS-PostgreSQL.c:143: Warning:Line broken 2
indent: RS-PostgreSQL.c:144: Warning:Line broken 2
indent: RS-PostgreSQL.c:145: Warning:Line broken 2
indent: RS-PostgreSQL.c:184: Warning:Line broken 2
indent: RS-PostgreSQL.c:185: Warning:Line broken 2
indent: RS-PostgreSQL.c:186: Warning:Line broken 2
indent: RS-PostgreSQL.c:187: Warning:Line broken 2
indent: RS-PostgreSQL.c:188: Warning:Line broken 2
indent: RS-PostgreSQL.c:189: Warning:Line broken 2
indent: RS-PostgreSQL.c:190: Warning:Line broken 2
indent: RS-PostgreSQL.c:360: Warning:Line broken 2
indent: RS-PostgreSQL.c:432: Warning:Line broken 2
indent: RS-PostgreSQL.c:438: Warning:Line broken 2
indent: RS-PostgreSQL.c:597: Warning:old style assignment ambiguity in "=-". Assuming "= -"

indent: RS-PostgreSQL.c:618: Warning:Line broken 2
indent: RS-PostgreSQL.c:620: Warning:Line broken 2
indent: RS-PostgreSQL.c:639: Warning:Line broken 2
indent: RS-PostgreSQL.c:674: Warning:Line broken 2

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0002d000
current_column () at code_io.c:204
204             switch (*p)
(gdb) bt
#0  current_column () at code_io.c:204
#1 0x00008158 in print_comment (paren_targ=0x15014, pbreak_line=0xbffff09c "") at comments.c:273 #2 0x000064a6 in indent (this_file=<value temporarily unavailable, due to optimizations>) at indent.c:2908
#3  0x00006eab in main (argc=10, argv=0xbffff1bc) at indent.c:3242
(gdb)

I suspect something in the source is causing this. How do I troubleshoot to find out? The particular source line looks benign. I have checked for goofy characters in the source and there are none.

Neil

the result file ends here.
==============================================================
#define BEGIN_GROUP 4 /* just read in 1'st row for a different group */ #define END_GROUP 8 /* just read the last row of the current group */
#define NEW_RECORD     16       /* unin


the partial source file is
==============================================================
s_object    *expand_list(s_object *old, Sint new_len);
void         add_group(s_object *group_names, s_object *data,
                             Stype *fld_Sclass, Sint group,
                             Sint ngroup, Sint i);
unsigned int check_groupEvents(s_object *data, Stype fld_Sclass[],
                          Sint row, Sint col);

/* The following are the masks for the events/states we recognize as we
 * bring rows from the result set/cursor
 */
#define NEVER           0
#define BEGIN 1 /* prior to reading 1st row from the resultset */ #define END 2 /* after reading last row from the result set */ #define BEGIN_GROUP 4 /* just read in 1'st row for a different group */ #define END_GROUP 8 /* just read the last row of the current group */
#define NEW_RECORD     16  /* uninteresting */
#define PARTIAL_GROUP 32 /* too much data (>max_rex) partial buffer */

/* the following are non-grouping events (e.g., db errors, memory) */
#define EXHAUSTED_DF   64  /* exhausted the allocated data.frame  */
#define EXHAUSTED_OUT 128  /* exhausted the allocated output list */
#define END_OF_DATA   256  /* end of data from the result set     */
#define DBMS_ERROR    512  /* error in remote dbms                */

/* beginGroupFun takes only one arg: the name of the current group */
s_object *
RS_DBI_invokeBeginGroup(s_object *callObj, /* should be initialized */
                        const char *group_name, /* one string */
                        s_object *rho)
{
    S_EVALUATOR

    s_object *s_group_name, *val;

    /* make a copy of the argument */
    MEM_PROTECT(s_group_name = NEW_CHARACTER((Sint) 1));
    SET_CHR_EL(s_group_name, 0, C_S_CPY(group_name));






reply via email to

[Prev in Thread] Current Thread [Next in Thread]