bug-indent
[Top][All Lists]
Advanced

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

Re: Segfault on Comment Line


From: indent
Subject: Re: Segfault on Comment Line
Date: Thu, 21 May 2009 10:51:31 +0200
User-agent: Thunderbird 2.0.0.19 (X11/20081227)

I cannot reproduce the problem with indent 2.2.10 using x64 Suse.

Here is my terminal output:

*> indent --verbose -br -i4 -nut --line-length120
--comment-line-length120 --leave-preprocessor-space -npcs RS-PostgreSQL.c*
option: br
option: i
option: nut
option: l
option: lc
option: lps
option: npcs
There were 1301 non-blank output lines and 274 comments
(Lines with comments)/(Lines with code):  0.248
*> indent --version*
GNU indent 2.2.10

I suggest you look in the input source file UP TO line 139 where you
first get a warning - probably a missing comment close. The warning
about line 597 does not appear, but I do see the following line at L621:

                completed = -1;

What does your compiler say about the input file?

David

Neil Tiffin wrote:
> 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));
>
>
>
>
> _______________________________________________
> bug-indent mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/bug-indent
>





reply via email to

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