[Bug 283677] New: smokegen segafults when compiling Akonadi binding from smokekde package

Vadim Zhukov persgray at gmail.com
Mon Oct 10 00:23:13 BST 2011


https://bugs.kde.org/show_bug.cgi?id=283677

           Summary: smokegen segafults when compiling Akonadi binding from
                    smokekde package
           Product: kde
           Version: 4.7
          Platform: Compiled Sources
        OS/Version: OpenBSD
            Status: UNCONFIRMED
          Severity: crash
          Priority: NOR
         Component: general
        AssignedTo: unassigned-bugs at kde.org
        ReportedBy: persgray at gmail.com


Version:           4.7 (using KDE 4.7.1) 
OS:                OpenBSD

smokegen segafults when compiling Akonadi binding from smokekde package. Looks
like either TypeCompiler::visitPtrOperator() needs more sanity checks for
token_text() returning non-empty string, or there are deeper problems. I've
never used Smoke, just porting the fresh KDE 4 on OpenBSD. If you need any
additional information, I'll be glad to provide it.

I hope that I'm not misusing this bugtracker. If I should ask somewhere else,
please point me there and sorry for any inconvenience.

Reproducible: Always

Steps to Reproduce:
Simple compile.

Actual Results:  
make -f akonadi/CMakeFiles/smokeakonadi.dir/build.make
akonadi/CMakeFiles/smokeakonadi.dir/depend
/usr/local/bin/cmake -E cmake_progress_report
/usr/ports/pobj/smokekde-4.7.1/build-i386/CMakeFiles 5
[ 79%] Generating smokedata.cpp, x_1.cpp, x_2.cpp, x_3.cpp, x_4.cpp, x_5.cpp,
x_6.cpp, x_7.cpp, x_8.cpp, x_9.cpp, x_10.cpp
cd /usr/ports/pobj/smokekde-4.7.1/build-i386/akonadi && /usr/local/bin/smokegen
-config /usr/ports/pobj/smokekde-4.7.1/build-i386/akonadi/config.xml
-smokeconfig
/usr/ports/pobj/smokekde-4.7.1/smokekde-4.7.1/akonadi/smokeconfig.xml -I
/usr/local/include --
/usr/ports/pobj/smokekde-4.7.1/smokekde-4.7.1/akonadi/akonadi_includes.h
using generator "/usr/local/bin/../lib/smokegen/generator_smoke.so" 
parsing
"/usr/ports/pobj/smokekde-4.7.1/smokekde-4.7.1/akonadi/akonadi_includes.h" 
Segmentation fault (core dumped) 
*** Error code 139

Expected Results:  
Expected successful compilation instead.

Here is my GDB session, hope this helps.

02:57 0 pers at persx201i:/usr/ports/pobj/smokekde-4.7.1/build-i386/akonadi$ gdb
-c smokegen.core /usr/local/bin/smokegen
GNU gdb 6.3
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-unknown-openbsd5.0"...
Core was generated by `smokegen'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/libpthread.so.13.1...done.
Loaded symbols for /usr/lib/libpthread.so.13.1
Reading symbols from /usr/local/lib/qt4/libQtCore.so.9.0...done.
Loaded symbols for /usr/local/lib/qt4/libQtCore.so.9.0
Reading symbols from /usr/local/lib/qt4/libQtXml.so.8.0...done.
Loaded symbols for /usr/local/lib/qt4/libQtXml.so.8.0
Reading symbols from /usr/local/lib/libcppparser.so.0.0...done.
Loaded symbols for /usr/local/lib/libcppparser.so.0.0
Reading symbols from /usr/lib/libstdc++.so.52.0...done.
Loaded symbols for /usr/lib/libstdc++.so.52.0
Reading symbols from /usr/lib/libm.so.7.0...done.
Loaded symbols for /usr/lib/libm.so.7.0
Symbols already loaded for /usr/lib/libpthread.so.13.1
Reading symbols from /usr/lib/libc.so.60.2...done.
Loaded symbols for /usr/lib/libc.so.60.2
Reading symbols from /usr/lib/libz.so.4.1...done.
Loaded symbols for /usr/lib/libz.so.4.1
Reading symbols from /usr/local/lib/libgthread-2.0.so.2992.0...done.
Loaded symbols for /usr/local/lib/libgthread-2.0.so.2992.0
Reading symbols from /usr/local/lib/libglib-2.0.so.2992.0...done.
Loaded symbols for /usr/local/lib/libglib-2.0.so.2992.0
Reading symbols from /usr/local/lib/libintl.so.5.0...done.
Loaded symbols for /usr/local/lib/libintl.so.5.0
Reading symbols from /usr/local/lib/libiconv.so.6.0...done.
Loaded symbols for /usr/local/lib/libiconv.so.6.0
Reading symbols from /usr/local/lib/libpcre.so.2.5...done.
Loaded symbols for /usr/local/lib/libpcre.so.2.5
Reading symbols from /usr/libexec/ld.so...done.
Loaded symbols for /usr/libexec/ld.so
Reading symbols from /usr/local/lib/smokegen/generator_smoke.so...done.
Loaded symbols for /usr/local/bin/../lib/smokegen/generator_smoke.so
#0  0x1c031db7 in TypeCompiler::visitPtrOperator (this=0xcfbf9804,
node=0x882062a4) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/type_compiler.cpp:194
194         if (token_text(m_session->token_stream->kind(node->op))[0] == '*')
{
(gdb) bt
#0  0x1c031db7 in TypeCompiler::visitPtrOperator (this=0xcfbf9804,
node=0x882062a4) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/type_compiler.cpp:194
#1  0x0c6d35a7 in Visitor::visit (this=0xcfbf9804, node=0x882062a4) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
#2  0x1c0350e6 in visitNodes<PtrOperatorAST*> (v=0xcfbf9804, nodes=0x882062e4)
at visitor.h:131
#3  0x1c031c2b in TypeCompiler::run (this=0xcfbf9804, ptr_ops=0x882062e4) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/type_compiler.cpp:106
#4  0x1c032252 in TypeCompiler::run (this=0xcfbf9804, declarator=0x88206274) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/type_compiler.cpp:69
#5  0x1c034255 in TypeCompiler::run (this=0xcfbf9804, node=0x8820621c,
declarator=0x88206274) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/type_compiler.cpp:63
#6  0x1c03725b in NameCompiler::visitTemplateArgument (this=0xcfbf9adc,
node=0x88206304) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/name_compiler.cpp:188
#7  0x0c6d35a7 in Visitor::visit (this=0xcfbf9adc, node=0x88206304) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
#8  0x1c037c06 in visitNodes<TemplateArgumentAST*> (v=0xcfbf9adc,
nodes=0x88206318) at visitor.h:131
#9  0x1c0366a2 in NameCompiler::visitUnqualifiedName (this=0xcfbf9adc,
node=0x88206200) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/name_compiler.cpp:162
#10 0x0c6d35a7 in Visitor::visit (this=0xcfbf9adc, node=0x88206200) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
#11 0x0c6d2dae in DefaultVisitor::visitName (this=0xcfbf9adc, node=0x882061e8)
at /usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/default_visitor.cpp:239
#12 0x0c6d35a7 in Visitor::visit (this=0xcfbf9adc, node=0x882061e8) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
#13 0x1c036fc1 in NameCompiler::internal_run (this=0xcfbf9adc, node=0x882061e8)
at /usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/name_compiler.cpp:123
#14 0x1c0325e7 in TypeCompiler::visitName (this=0x81044300, node=0x882061e8) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/type_compiler.cpp:241
#15 0x0c6d35a7 in Visitor::visit (this=0x81044300, node=0x882061e8) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
#16 0x0c6d35a7 in Visitor::visit (this=0x81044300, node=0x88206500) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
#17 0x1c03423f in TypeCompiler::run (this=0x81044300, node=0x88206500,
declarator=0x0) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/type_compiler.cpp:60
#18 0x1c01476f in GeneratorVisitor::visitSimpleDeclaration (this=0xcfbf9e78,
node=0x8820656c) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/generatorvisitor.cpp:746
#19 0x0c6d35a7 in Visitor::visit (this=0xcfbf9e78, node=0x8820656c) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
#20 0x1c013515 in GeneratorVisitor::visitTemplateDeclaration (this=0xcfbf9e78,
node=0x88206590) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/generatorvisitor.cpp:836
#21 0x0c6d35a7 in Visitor::visit (this=0xcfbf9e78, node=0x88206590) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
#22 0x0c6d3088 in visitNodes<DeclarationAST*> (v=0xcfbf9e78, nodes=0x882060f4)
at visitor.h:131
#23 0x0c6d29a7 in DefaultVisitor::visitLinkageBody (this=0xcfbf9e78,
node=0x84225c94) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/default_visitor.cpp:221
#24 0x0c6d35a7 in Visitor::visit (this=0xcfbf9e78, node=0x84225c94) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
#25 0x0c6d23eb in DefaultVisitor::visitNamespace (this=0xcfbf9e78,
node=0x84225c7c) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/default_visitor.cpp:244
#26 0x1c013f75 in GeneratorVisitor::visitNamespace (this=0xcfbf9e78,
node=0x84225c7c) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/generatorvisitor.cpp:635
#27 0x0c6d35a7 in Visitor::visit (this=0xcfbf9e78, node=0x84225c7c) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
#28 0x0c6d3088 in visitNodes<DeclarationAST*> (v=0xcfbf9e78, nodes=0x859e214c)
at visitor.h:131
#29 0x0c6d2977 in DefaultVisitor::visitTranslationUnit (this=0xcfbf9e78,
node=0x859e2000) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/default_visitor.cpp:394
#30 0x0c6d35a7 in Visitor::visit (this=0xcfbf9e78, node=0x859e2000) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
#31 0x1c00f6cb in main (argc=Cannot access memory at address 0x0
) at /usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/main.cpp:229
(gdb) f 0
#0  0x1c031db7 in TypeCompiler::visitPtrOperator (this=0xcfbf9804,
node=0x882062a4) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/type_compiler.cpp:194
194         if (token_text(m_session->token_stream->kind(node->op))[0] == '*')
{
(gdb) l
189         m_realType.appendParameter(Parameter(name_cc.name(),
Type::registerType(tc.type())));
190     }
191
192     void TypeCompiler::visitPtrOperator(PtrOperatorAST* node)
193     {
194         if (token_text(m_session->token_stream->kind(node->op))[0] == '*')
{
195             QPair<bool, bool> cv = m_visitor->parseCv(node->cv);
196             pointerDepth.append(cv.first);
197         } else if (token_text(m_session->token_stream->kind(node->op))[0]
== '&') {
198             isRef = true;
(gdb) p node
$1 = (PtrOperatorAST *) 0x882062a4
(gdb) p node->op
$2 = 0
(gdb) p m_session
$3 = (ParseSession *) 0xcfbf9fe8
(gdb) p m_session->token_stream
$4 = (TokenStream *) 0x81043e80
(gdb) p *m_session->token_stream
$5 = {tokens = 0x8d9f7000, index = 261265, token_count = 262144}
(gdb) p m_session->token_stream->tokens
$6 = (Token *) 0x8d9f7000
(gdb) p *m_session->token_stream->tokens
$7 = {kind = 0, position = 0, size = 0, session = 0xcfbf9fe8, extra =
{right_brace = 0}}
(gdb) l TokenStream::kind
the class TokenStream does not have any method named kind
Hint: try 'TokenStream::kind<TAB> or 'TokenStream::kind<ESC-?>
(Note leading single quote.)
(gdb) l TokenStream::kind
the class TokenStream does not have any method named kind
Hint: try 'TokenStream::kind<TAB> or 'TokenStream::kind<ESC-?>
(Note leading single quote.)
(gdb) l token_text
350
351       Q_ASSERT(0);
352       return 0;
353     }
354
355     char const *token_text(int token)
356     {
357       if (token >= 32 && token <= 127)
358         {
359           return _S_printable[token - 32];
(gdb) l
360         }
361       else if (token >= 1000)
362         {
363           return _S_token_texts[token - 1000];
364         }
365
366       return 0;
367     }
(gdb) p _S_printable
$8 = {" ", "!", "\"", "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-",
".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=",
">", "?", "@", "A", "B",
  "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q",
"R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\\", "]", "^", "_", "`",
"a", "b", "c", "d", "e",
  "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
"u", "v", "w", "x", "y", "z", "{", "|", "}", "~", "\177", "\200"}
(gdb) p _S_token_texts
$9 = {0x2c6bb290 "K_DCOP", 0x2c6bb297 "Q_OBJECT", 0x2c6bb2b2 "__attribute__",
0x2c6bb2c0 "__typeof", 0x2c6bb891 "&&", 0x2c6bb894 "&=", 0x2c6bbed0 ">",
0x2c6bb2d0 "asm",
  0x2c6bb897 "==", 0x2c6bb2d4 "auto", 0x2c6bbf8f "&", 0x2c6bb8e6 "|",
0x2c6bb2e6 "bool", 0x2c6bb2eb "break", 0x2c6bb2f1 "case", 0x2c6bb2f6 "catch",
0x2c6bb2fc "char",
  0x2c6bb89a "char_literal", 0x2c6bb301 "class", 0x2c6bb8a7 "comment",
0x2c6bb8af "~", 0x2c6bb8b1 "concat", 0x2c6bb30d "const", 0x2c6bb313
"const_cast", 0x2c6bb31e "continue",
  0x2c6bb8b8 "--", 0x2c6bb327 "default", 0x2c6bb32f "delete", 0x2c6bb336 "do",
0x2c6bb339 "double", 0x2c6bb340 "dynamic_cast", 0x2c6bb8bb "...", 0x2c6bb34d
"else",
  0x2c6bb352 "emit", 0x2c6bb357 "enum", 0x2c6bb897 "==", 0x2c6bb35c "explicit",
0x2c6bb365 "export", 0x2c6bb36c "extern", 0x2c6bb373 "false", 0x2c6bb379
"float", 0x2c6bb37f "for",
  0x2c6bb383 "friend", 0x2c6bb8bf ">=", 0x2c6bb38a "goto", 0x2c6bb8c2
"identifier", 0x2c6bc45c "if", 0x2c6bb8cd "++", 0x2c6bb394 "inline", 0x2c6bb39b
"int", 0x2c6bb39f "k_dcop",
  0x2c6bb3a6 "k_dcop_signals", 0x2c6bb8d0 "<=", 0x2c6bb3b5 "long", 0x2c6bb3ba
"mutable", 0x2c6bb3c2 "namespace", 0x2c6bb3cc "new", 0x2c6bbf9b "!", 0x2c6bb8d3
"!=",
  0x2c6bb8d6 "number_literal", 0x2c6bb3db "operator", 0x2c6bb8e5 "||",
0x2c6bb8e8 "|=", 0x2c6bb8eb "preproc", 0x2c6bb3e4 "private", 0x2c6bb3ec
"protected", 0x2c6bb8f3 "ptrmem",
  0x2c6bb3f6 "public", 0x2c6bb3fd "register", 0x2c6bb406 "reinterpret_cast",
0x2c6bb417 "return", 0x2c6bb8fa "::", 0x2c6bb8fd "shift", 0x2c6bb41e "short",
0x2c6bb3ad "signals",
  0x2c6bb48a "signed", 0x2c6bb424 "sizeof", 0x2c6bb4ad "size_t", 0x2c6bb42b
"slots", 0x2c6bb431 "static", 0x2c6bb438 "static_cast", 0x2c6bb903
"string_literal", 0x2c6bb444 "struct",
  0x2c6bb44b "switch", 0x2c6bb452 "template", 0x2c6bb50e "this", 0x2c6bb45b
"throw", 0x2c6bb461 "true", 0x2c6bb466 "try", 0x2c6bb46a "typedef", 0x2c6bb472
"typeid",
  0x2c6bb479 "typename", 0x2c6bb482 "union", 0x2c6bb488 "unsigned", 0x2c6bb491
"using", 0x2c6bb497 "virtual", 0x2c6bb49f "void", 0x2c6bb4a4 "volatile",
0x2c6bb4b4 "wchar_t",
  0x2c6bb4bc "while", 0x2c6bb912 "whitespaces", 0x2c6bb91e "^", 0x2c6bb920
"^="}
(gdb) f 1
#1  0x0c6d35a7 in Visitor::visit (this=0xcfbf9804, node=0x882062a4) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/parser/visitor.cpp:113
113         (this->*_S_table[node->kind])(node);
(gdb) f 0
#0  0x1c031db7 in TypeCompiler::visitPtrOperator (this=0xcfbf9804,
node=0x882062a4) at
/usr/ports/pobj/smokegen-4.7.1/smokegen-4.7.1/type_compiler.cpp:194
194         if (token_text(m_session->token_stream->kind(node->op))[0] == '*')
{
(gdb) l
189         m_realType.appendParameter(Parameter(name_cc.name(),
Type::registerType(tc.type())));
190     }
191
192     void TypeCompiler::visitPtrOperator(PtrOperatorAST* node)
193     {
194         if (token_text(m_session->token_stream->kind(node->op))[0] == '*')
{
195             QPair<bool, bool> cv = m_visitor->parseCv(node->cv);
196             pointerDepth.append(cv.first);
197         } else if (token_text(m_session->token_stream->kind(node->op))[0]
== '&') {
198             isRef = true;
(gdb) l
199         }
200     }
201
202     void TypeCompiler::visitSimpleTypeSpecifier(SimpleTypeSpecifierAST
*node)
203     {
204       if (const ListNode<std::size_t> *it = node->integrals)
205         {
206           it = it->toFront();
207           const ListNode<std::size_t> *end = it;
208           do
(gdb)

-- 
Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the Unassigned-bugs mailing list