Subject: bug#6342: closed (Re: 23.2; error writing table of symbols with semantic in cedet)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 08 Oct 2012 15:48:02 +0000

Your bug report

#6342: 23.2; error writing table of symbols with semantic in cedet

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
6342: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6342
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: 23.2; error writing table of symbols with semantic in cedet
From: David Engster <[email-masked]>
To: Jonathan Marchand <[email-masked]>
Cc: [email-masked]
Date: Mon, 08 Oct 2012 17:46:29 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

David Engster writes:
> Jonathan Marchand writes:
>> Moreover, I have a backtrace with an example of a symbol that semantic
>> can't handle well in file ctype.h (the one in /usr/include/), here
>> is the output :
>>
>> Error Writing Table: #<semanticdb-table ctype.h>
>> Save Error: "\"Error in macro \\\"name\\\"\"":
>> /home/jonathlela/.emacs.d/semanticdb/!usr!include!semantic.cache
>
> It's been a while, but can you still see this error? I just tried to
> parse ctype.h using the latest Emacs from bzr, and it seems to work
> fine. If you're still having problems with this, please give a recipe to
> reproduce this.

I still cannot reproduce this using latest Emacs bzr, and no further
information was given, hence I am closing this report. Please reopen if
you still have problems.

-David

Subject: 23.2; error writing table of symbols with semantic in cedet
From: Jonathan Marchand <[email-masked]>
To: [email-masked]
Date: Thu, 3 Jun 2010 17:37:29 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

I'm reporting a second bug in cedet in emacs23 (and 24). When editing a
C file, semantic saves the symbol tables from the include files required
by the C file in a cache file in order not to process again these files
when a new instance emacs runs. Sometimes, it happens that semantic is
not able to get the value of a symbol from a file, and report the error
to the echo area. As the save process is a task done automaticly on
iddle, every minutes semantic reports an error on the echo area (which
is just annoying). In the CVS version of cedet, the problematic symbols
are still not proceeded, but it doesn't report an error (actually, the
symbol is just marked as bogus). This is done in the 1.53 revision of
the semantic-lex-spp.el file of the cvs version
(http://cedet.cvs.sourceforge.net/viewvc/cedet/cedet/semantic/semantic-lex-spp.el?view=log).
I provide a patch that follows this fix (without adding the other stuff
that just do nothing for the moment).

Moreover, I have a backtrace with an example of a symbol that semantic
can't handle well in file ctype.h (the one in /usr/include/), here is the output :

Error Writing Table: #<semanticdb-table ctype.h>
Save Error: "\"Error in macro \\\"name\\\"\"": /home/jonathlela/.emacs.d/semanticdb/!usr!include!semantic.cache

Precisely, the error occurs when calling
semantic-lex-spp-table-write-slot-value with value =

(("__exctype" (spp-arg-list (#1="name") 3728 . 3734) (EXTERN "extern" 3735 . 3741) (INT "int" 3742 . 3745) (symbol "name" 3746 . 3750) (semantic-list "(int)" 3751 . 3756) (symbol "__THROW" 3757 . 3764)) ("isalnum" (spp-arg-list ("c") 5853 . 5856) (symbol "__isctype" 5857 . 5866) (semantic-list "((c), _ISalnum)" 5866 . 5881)) ("isprint" (spp-arg-list ("c") 6123 . 6126) (symbol "__isctype" 6127 . 6136) (semantic-list "((c), _ISprint)" 6136 . 6151)) ("ispunct" (spp-arg-list ("c") 6168 . 6171) (symbol "__isctype" 6172 . 6181) (semantic-list "((c), _ISpunct)" 6181 . 6196)) ("isxdigit" (spp-arg-list ("c") 6304 . 6307) (symbol "__isctype" 6308 . 6317) (semantic-list "((c), _ISxdigit)" 6317 . 6333)) ("_tolower" (spp-arg-list ("c") 7099 . 7102) (semantic-list "((int) (*__ctype_tolower_loc ())[(int) (c)])" 7103 . 7147)) ("toupper" (spp-arg-list ("c") 6855 . 6858) (symbol "__tobody" 6859 . 6867) (semantic-list "(c, toupper, *__ctype_toupper_loc (), (c))" 6868 . 6910)) ("isspace" (spp-arg-list ("c") 6213 . 6216) (symbol "__isctype" 6217 . 6226) (semantic-list "((c), _ISspace)" 6226 . 6241)) ("isgraph" (spp-arg-list ("c") 6078 . 6081) (symbol "__isctype" 6082 . 6091) (semantic-list "((c), _ISgraph)" 6091 . 6106)) ("_CTYPE_H" (number "1" 1003 . 1004)) ("_ISbit" (spp-arg-list ("bit") 1504 . 1509) (semantic-list "(1 << (bit))" 1510 . 1522)) ("__toascii" (spp-arg-list ("c") 3665 . 3668) (semantic-list "((c) & 0x7f)" 3669 . 3681)) ("__tobody" (spp-arg-list ("c" "f" "a" "args") 5305 . 5320) (semantic-list "(__extension__             \\\n   ({ int __res;             \\\n      if (sizeof (c) > 1)            \\\n {              \\\n   if (__builtin_constant_p (c))           \\\n     {              \\\n       int __c = (c);            \\\n       __res = __c < -128 || __c > 255 ? __c : (a)[__c];        \\\n     }              \\\n   else              \\\n     __res = f args;            \\\n }              \\\n      else              \\\n __res = (a)[(int) (c)];            \\\n      __res; }))" 5325 . 5787)) ("isupper" (spp-arg-list ("c") 6258 . 6261) (symbol "__isctype" 6262 . 6271) (semantic-list "((c), _ISupper)" 6271 . 6286)) ("iscntrl" (spp-arg-list ("c") 5943 . 5946) (symbol "__isctype" 5947 . 5956) (semantic-list "((c), _IScntrl)" 5956 . 5971)) ("tolower" (spp-arg-list ("c") 6782 . 6785) (symbol "__tobody" 6786 . 6794) (semantic-list "(c, tolower, *__ctype_tolower_loc (), (c))" 6795 . 6837)) ("toascii" (spp-arg-list ("c") 7062 . 7065) (symbol "__toascii" 7066 . 7075) (semantic-list "(c)" 7076 . 7079)) ("__isctype" (spp-arg-list ("c" "type") 3500 . 3509) (semantic-list "((*__ctype_b_loc ())[(int) (c)] & (unsigned short int) type)" 3514 . 3574)) ("_toupper" (spp-arg-list ("c") 7166 . 7169) (semantic-list "((int) (*__ctype_toupper_loc ())[(int) (c)])" 7170 . 7214)) (#1# symbol "_tolower" 5177 . 5185) ("__isascii" (spp-arg-list ("c") 3593 . 3596) (semantic-list "(((c) & ~0x7f) == 0)" 3597 . 3617)) ("isdigit" (spp-arg-list ("c") 5988 . 5991) (symbol "__isctype" 5992 . 6001) (semantic-list "((c), _ISdigit)" 6001 . 6016)) ("islower" (spp-arg-list ("c") 6033 . 6036) (symbol "__isctype" 6037 . 6046) (semantic-list "((c), _ISlower)" 6046 . 6061)) ("isascii" (spp-arg-list ("c") 7027 . 7030) (symbol "__isascii" 7031 . 7040) (semantic-list "(c)" 7041 . 7044)) ("isalpha" (spp-arg-list ("c") 5898 . 5901) (symbol "__isctype" 5902 . 5911) (semantic-list "((c), _ISalpha)" 5911 . 5926)))

The error is raised when sym =

("name" symbol "_tolower" 5177 . 5185)

I don't know if someone can do something with these informations, but
still it may be a good starting point to fix the problem.

Regards,

Jonathan Marchand
=== modified file 'lisp/cedet/semantic/lex-spp.el'
--- lisp/cedet/semantic/lex-spp.el	2010-01-13 08:35:10 +0000
+++ lisp/cedet/semantic/lex-spp.el	2010-06-03 14:43:12 +0000
@@ -1121,8 +1121,8 @@
       (prin1 (car sym))
       (let* ((first (car (cdr sym)))
 	     (rest (cdr sym)))
-	(when (not (listp first))
-	  (error "Error in macro \"%s\"" (car sym)))
+	(if (not (listp first))
+	   (insert "nil ;; bogus macro found.\n")
 	(when (eq (car first) 'spp-arg-list)
 	  (princ " ")
 	  (prin1 first)
@@ -1147,7 +1147,7 @@
 		  (t ;; Too Long!
 		   (princ "nil ;; Too Long!\n          ")
 		   ))))
-	)
+	))
       (princ ")\n          ")
       )
     (princ ")\n"))