[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