|
Bugzilla – Full Text Bug Listing |
| Summary: | sax2: yast2 live-installer segfaults | ||
|---|---|---|---|
| Product: | [openSUSE] openSUSE 11.0 | Reporter: | Dejan Cabrilo <dcabrilo> |
| Component: | SaX2 | Assignee: | Marcus Schaefer <ms> |
| Status: | RESOLVED FIXED | QA Contact: | E-mail List <qa-bugs> |
| Severity: | Critical | ||
| Priority: | P5 - None | CC: | captain.magnus, deanjo, forgotten_0RO3Kla3Ru, forgotten_Drfk9mafMw, francis, johnl, jsrain, jsuchome, kailed, mvidner, robert.brooks, sontek |
| Version: | Beta 1 | ||
| Target Milestone: | --- | ||
| Hardware: | Other | ||
| OS: | Other | ||
| Whiteboard: | |||
| Found By: | --- | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
| Bug Depends on: | |||
| Bug Blocks: | 388612 | ||
| Attachments: |
y2log of "yast2 --ncurses live-installer"
yast logs SaX.log sax2.diff ycp test case |
||
same issue upon attempting to install the x86 - 64 sbin/yast2: line 420: 6092 Segmentation fault $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS lenovo t61 - 4 Gb, t9300, intel GMA X3100, etc. -- let me know if you want logs /rb Cannot reproduce with recent snapshot, since kernel freezes before YaST segfaults :-/ Reproducued, the crash is exactly the same as in the log - it crashes when calling SaX. sax2 logs ? init 3 sax2 ==> /var/log/SaX.log thanks Created attachment 211682 [details]
yast logs
Still happens with the 20080430 LiveCD.
Running sax2 as well as sax2 -r -a works without any issues.
Attaching both yast and sax logs.
Created attachment 211683 [details]
SaX.log
*** Bug 384207 has been marked as a duplicate of this bug. *** Heres a bt (gdb) bt #0 0x00007f9668ae02f6 in poll () from /lib64/libc.so.6 #1 0x00007f9660389edf in ?? () from /usr/lib64/libglib-2.0.so.0 #2 0x00007f966038a1dc in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #3 0x00007f9662055d8c in YGUI::idleLoop () from /usr/lib64/YaST2/plugin/libpy2gtk.so.2 #4 0x00007f9666ced625 in YUI::uiThreadMainLoop () from /usr/lib64/libyui.so.3 #5 0x00007f9666ced87e in start_ui_thread () from /usr/lib64/libyui.so.3 #6 0x00007f9669c42040 in start_thread () from /lib64/libpthread.so.0 #7 0x00007f9668ae903d in clone () from /lib64/libc.so.6 (gdb) bt #0 0x00007f9668ae02f6 in poll () from /lib64/libc.so.6 #1 0x00007f9660389edf in ?? () from /usr/lib64/libglib-2.0.so.0 #2 0x00007f966038a1dc in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #3 0x00007f9662055d8c in YGUI::idleLoop () from /usr/lib64/YaST2/plugin/libpy2gtk.so.2 #4 0x00007f9666ced625 in YUI::uiThreadMainLoop () from /usr/lib64/libyui.so.3 #5 0x00007f9666ced87e in start_ui_thread () from /usr/lib64/libyui.so.3 #6 0x00007f9669c42040 in start_thread () from /lib64/libpthread.so.0 #7 0x00007f9668ae903d in clone () from /lib64/libc.so.6 (gdb) thread 2 [Switching to thread 2 (process 10744)]#0 0x00007f9668a488b7 in kill () from /lib64/libc.so.6 (gdb) bt #0 0x00007f9668a488b7 in kill () from /lib64/libc.so.6 #1 0x00007f966a73398f in signal_handler () from /usr/lib64/liby2.so.2 #2 <signal handler called> #3 0x00007f9655ee44ba in QString::ascii_helper () from /usr/lib64/libQtCore.so.4 #4 0x00007f965b6d67da in SaX::SaXManipulateKeyboard::setXKBVariant () from /usr/lib64/libsax.so.7 #5 0x00007f965b9b7d80 in _wrap_SaXManipulateKeyboard_setXKBVariant () from /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/auto/SaX/SaX.so #6 0x00007f96674ef6f5 in Perl_pp_entersub () from /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so #7 0x00007f96674c4b07 in Perl_runops_debug () from /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so #8 0x00007f96674ea800 in Perl_call_sv () from /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so #9 0x00007f96677ec0c4 in YPerl::callInner () from /usr/lib64/YaST2/plugin/libpy2lang_perl.so #10 0x00007f96677f2f89 in Y2PerlFunctionCall::evaluateCall () from /usr/lib64/YaST2/plugin/libpy2lang_perl.so #11 0x00007f966a9c3ddf in YEFunction::evaluate () from /usr/lib64/libycp.so.3 #12 0x00007f966a9cd681 in YSExpression::evaluate () from /usr/lib64/libycp.so.3 #13 0x00007f966a9ec0c9 in YBlock::evaluate () from /usr/lib64/libycp.so.3 ---Type <return> to continue, or q <return> to quit--- #14 0x00007f966a9c098c in Y2YCPFunction::evaluateCall () from /usr/lib64/libycp.so.3 #15 0x00007f966a9c3ddf in YEFunction::evaluate () from /usr/lib64/libycp.so.3 #16 0x00007f966a9cd681 in YSExpression::evaluate () from /usr/lib64/libycp.so.3 #17 0x00007f966a9ec0c9 in YBlock::evaluate () from /usr/lib64/libycp.so.3 #18 0x00007f966a9cd4f1 in YSBlock::evaluate () from /usr/lib64/libycp.so.3 #19 0x00007f966a9dd1f7 in YSIf::evaluate () from /usr/lib64/libycp.so.3 #20 0x00007f966a9dd227 in YSIf::evaluate () from /usr/lib64/libycp.so.3 #21 0x00007f966a9ec0c9 in YBlock::evaluate () from /usr/lib64/libycp.so.3 #22 0x00007f966a9a766c in YCPCodeRep::evaluate () from /usr/lib64/libycp.so.3 #23 0x00007f966b0ae1dd in Y2WFMComponent::doActualWork () from /usr/lib64/YaST2/plugin/libpy2wfm.so.2 #24 0x00007f966b0abc27 in Y2WFMComponent::CallFunction () from /usr/lib64/YaST2/plugin/libpy2wfm.so.2 #25 0x00007f966b0b1262 in ?? () from /usr/lib64/YaST2/plugin/libpy2wfm.so.2 #26 0x00007f966a9bfa0a in YEBuiltin::evaluate () from /usr/lib64/libycp.so.3 #27 0x00007f966a9cd681 in YSExpression::evaluate () from /usr/lib64/libycp.so.3 #28 0x00007f966a9ec0c9 in YBlock::evaluate () from /usr/lib64/libycp.so.3 #29 0x00007f966a9a766c in YCPCodeRep::evaluate () from /usr/lib64/libycp.so.3 #30 0x00007f966aa1cfb8 in ?? () from /usr/lib64/libycp.so.3 #31 0x00007f966a9bf95a in YEBuiltin::evaluate () from /usr/lib64/libycp.so.3 #32 0x00007f966a9cd681 in YSExpression::evaluate () from /usr/lib64/libycp.so.3 #33 0x00007f966a9ec0c9 in YBlock::evaluate () from /usr/lib64/libycp.so.3 ---Type <return> to continue, or q <return> to quit--- #34 0x00007f966a9a766c in YCPCodeRep::evaluate () from /usr/lib64/libycp.so.3 #35 0x00007f966aa1cfb8 in ?? () from /usr/lib64/libycp.so.3 #36 0x00007f966a9bf95a in YEBuiltin::evaluate () from /usr/lib64/libycp.so.3 #37 0x00007f966a9cd681 in YSExpression::evaluate () from /usr/lib64/libycp.so.3 #38 0x00007f966a9ec0c9 in YBlock::evaluate () from /usr/lib64/libycp.so.3 #39 0x00007f966a9a766c in YCPCodeRep::evaluate () from /usr/lib64/libycp.so.3 #40 0x00007f966b0ae1dd in Y2WFMComponent::doActualWork () from /usr/lib64/YaST2/plugin/libpy2wfm.so.2 #41 0x00007f966b0abc27 in Y2WFMComponent::CallFunction () from /usr/lib64/YaST2/plugin/libpy2wfm.so.2 #42 0x00007f966b0b1262 in ?? () from /usr/lib64/YaST2/plugin/libpy2wfm.so.2 #43 0x00007f966a9bfa0a in YEBuiltin::evaluate () from /usr/lib64/libycp.so.3 #44 0x00007f966a9af67a in YEPropagate::evaluate () from /usr/lib64/libycp.so.3 #45 0x00007f966a9cd8b7 in YSAssign::evaluate () from /usr/lib64/libycp.so.3 #46 0x00007f966a9ec0c9 in YBlock::evaluate () from /usr/lib64/libycp.so.3 #47 0x00007f966a9cd4f1 in YSBlock::evaluate () from /usr/lib64/libycp.so.3 #48 0x00007f966a9e0902 in YSWhile::evaluate () from /usr/lib64/libycp.so.3 #49 0x00007f966a9ec0c9 in YBlock::evaluate () from /usr/lib64/libycp.so.3 #50 0x00007f966a9c098c in Y2YCPFunction::evaluateCall () from /usr/lib64/libycp.so.3 #51 0x00007f966a9c3ddf in YEFunction::evaluate () from /usr/lib64/libycp.so.3 #52 0x00007f966a9cd8b7 in YSAssign::evaluate () from /usr/lib64/libycp.so.3 #53 0x00007f966a9ec0c9 in YBlock::evaluate () from /usr/lib64/libycp.so.3 ---Type <return> to continue, or q <return> to quit--- #54 0x00007f966a9c098c in Y2YCPFunction::evaluateCall () from /usr/lib64/libycp.so.3 #55 0x00007f966a9c3ddf in YEFunction::evaluate () from /usr/lib64/libycp.so.3 #56 0x00007f966a9cd8b7 in YSAssign::evaluate () from /usr/lib64/libycp.so.3 #57 0x00007f966a9ec0c9 in YBlock::evaluate () from /usr/lib64/libycp.so.3 #58 0x00007f966a9a766c in YCPCodeRep::evaluate () from /usr/lib64/libycp.so.3 #59 0x00007f966b0ae1dd in Y2WFMComponent::doActualWork () from /usr/lib64/YaST2/plugin/libpy2wfm.so.2 #60 0x00007f966a732566 in main () from /usr/lib64/liby2.so.2 #61 0x00007f9668a3444a in __libc_start_main () from /lib64/libc.so.6 #62 0x0000000000400659 in ?? () #63 0x00007fff734d9968 in ?? () #64 0x000000000000001c in ?? () #65 0x0000000000000003 in ?? () #66 0x00007fff734da7a0 in ?? () #67 0x00007fff734da7ba in ?? () #68 0x00007fff734da7c9 in ?? () #69 0x0000000000000000 in ?? () I don't understand the crash. The QString passed to the function is not initialized - which usually happens with static objects somewhere, but I see nothing hinting to where this would be. And I don't understand where the ycp:string is mapped to a PERL string is mapped to a Qt String. All I know: it's triggered by Keyboard:update_x86. I'm testing what bugs I get when I take this call out, most likely less harmless than crashing installer. But somehow the problem is gnome cd specific - or at least not happening with yast2-qt, which would be another indication that the QString is created somewhere not so cleverly. Workaround from coolo; edit /usr/share/YaST2/clients/live_save_config_finish.ycp and take out the call of update_x86 and the following cp *** Bug 385729 has been marked as a duplicate of this bug. *** *** Bug 385749 has been marked as a duplicate of this bug. *** The whole thing with debug infos btw:
#3 0xb3ea644a in QString::ascii_helper (this=0xb3fde3a8) at tools/qstring.cpp:3221
#4 0xb5b04cb0 in SaX::SaXManipulateKeyboard::setXKBVariant (this=0x9c7f608, layout=@0xbfa85484, variant=@0xbfa85480)
at /usr/include/QtCore/qstring.h:546
#5 0xb5be4519 in _wrap_SaXManipulateKeyboard_setXKBVariant (my_perl=0x82381c8, cv=0x871ab44) at SaX_wrap.cxx:10968
#6 0xb76b7899 in Perl_pp_entersub (my_perl=0x82381c8) at pp_hot.c:2847
#7 0xb7679063 in Perl_runops_debug (my_perl=0x82381c8) at dump.c:1931
#8 0xb76b0bf8 in Perl_call_sv (my_perl=0x82381c8, sv=0x8b71e24, flags=4) at perl.c:2646
#9 0xb76b3d24 in Perl_call_pv (my_perl=0x82381c8, sub_name=0x9c3e2a4 "XLibAPI::setXkbVariant", flags=4) at perl.c:2547
#10 0xb7845e35 in YPerl::callInner (this=0x8237fa0, module=
{static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xbfa85824 "��\200\bk���o\001� ��\bY��xY�����\bY���f�\t\001"}}, function=
{static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xbfa85820 "L\231�\t��\200\bk���o\001� ��\bY��xY�����\bY���f�\t\001"}}, method=true, argList=
{<YCPValue> = {<YCPElement> = {element = 0xbfa8581c}, <No data fields>}, <No data fields>}, wanted_result_type=
{<constPtrBase<Type>> = {<RepPtrBase> = {_vptr.RepPtrBase = 0xbfa85814}, <No data fields>}, _ptr = {_obj = 0xbfa85820}}) at YPerl.cc:291
#11 0xb784e179 in Y2PerlFunctionCall::evaluateCall (this=0x9c866e8) at YPerlNamespace.cc:269
#12 0xb7f4cfb2 in YEFunction::evaluate (this=0x8b93a50, cse=false) at YExpression.cc:3126
#13 0xb7f59b5a in YSExpression::evaluate (this=0x8b93a38, cse=false) at YStatement.cc:269
#14 0xb7f7d167 in YBlock::evaluate (this=0x8b93378, cse=false) at YBlock.cc:604
#15 0xb7f495d5 in Y2YCPFunction::evaluateCall (this=0x8d35f78) at YExpression.cc:3363
#16 0xb7f4cfb2 in YEFunction::evaluate (this=0x97a74b8, cse=false) at YExpression.cc:3126
#17 0xb7f59b5a in YSExpression::evaluate (this=0x807fff8, cse=false) at YStatement.cc:269
#18 0xb7f7d167 in YBlock::evaluate (this=0x9753a80, cse=false) at YBlock.cc:604
#19 0xb7f59894 in YSBlock::evaluate (this=0x8e61430, cse=false) at YStatement.cc:326
#20 0xb7f6a77e in YSIf::evaluate (this=0x9620528, cse=false) at YStatement.cc:1061
#21 0xb7f6a77e in YSIf::evaluate (this=0x9643dc0, cse=false) at YStatement.cc:1061
#22 0xb7f7d167 in YBlock::evaluate (this=0x8807fe0, cse=false) at YBlock.cc:604
#23 0xb7f2e3ee in YCPCodeRep::evaluate (this=0x862c6e8, cse=168) at YCPCode.cc:82
#24 0xb8058c18 in Y2WFMComponent::doActualWork (this=0x80757d0, arglist=@0xbfa86278, displayserver=0x0) at Y2WFMComponent.cc:177
#25 0xb80598ee in Y2WFMComponent::CallFunction (this=0x80757d0, client=@0xbfa86274, args=@0xbfa86278) at Y2WFMComponent.cc:662
#26 0xb805e1d9 in WFMCallFunction1 (name=@0xbfa86274, args=@0xbfa86278) at WFM.cc:80
#27 0xb7f48bf2 in YEBuiltin::evaluate (this=0x966cad8, cse=false) at YExpression.cc:2559
#28 0xb7f59b5a in YSExpression::evaluate (this=0x968f5f0, cse=false) at YStatement.cc:269
#29 0xb7f7d167 in YBlock::evaluate (this=0x961e9f0, cse=false) at YBlock.cc:604
#30 0xb7f2e3ee in YCPCodeRep::evaluate (this=0x964f5e8, cse=168) at YCPCode.cc:82
#31 0xb7fb9665 in l_foreach (sym=@0xbfa865f4, list=@0xbfa865f8, expr=@0xbfa865fc) at YCPBuiltinList.cc:1065
#32 0xb7f48b82 in YEBuiltin::evaluate (this=0x961e6c0, cse=false) at YExpression.cc:2562
#33 0xb7f59b5a in YSExpression::evaluate (this=0x961e780, cse=false) at YStatement.cc:269
#34 0xb7f7d167 in YBlock::evaluate (this=0x95afb58, cse=false) at YBlock.cc:604
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) frame 3
#3 0xb3ea644a in QString::ascii_helper (this=0xb3fde3a8) at tools/qstring.cpp:3221
3221 d->asciiCache = true;
Current language: auto; currently c++
(gdb) print d
$1 = (QString::Data *) 0x0
(In reply to comment #10 from Stephan Kulow) > And I don't understand where the ycp:string is mapped to a PERL string is > mapped to a Qt String. Keyboard::Save is in YCP, it calls (via yast2-perl-bindings) XLibAPI::setXkbVariant which is in Perl . That calls XLib::setXkbVariant which is also in Perl. That calls SaX::SaXManipulateKeyboard::setXKBVariant which is a SWIG Perl wrapper for a C++ class. I tried "Y2DEBUG=1 yast2 --gtk ./k.ycp" where k.ycp calls only Keyboard::Save(true) and it does not crash. Hmm, I have tried setXKBVariant with sax2 directly and through a binding (perl like in YaST2) and I couldn't reproduce a crash. Which variant is set in your case ? See my notes in Bug 385749 ... en_US doesn't work, but de_DE does work (selection at CD-Splash) I could reproduce the crash on Beta 1, calling "yast keyboard" (curses version), selecting English (US) and saving the settings. In another debugging thread, I found that the arguments were layout=us variant=basic. The crash appears to happen at keyboard.cpp:376: item = *vList.at (varCount); does the following patch fix it ? Created attachment 211965 [details]
sax2.diff
Thanks Martin for your investigations You're welcome. But for more testing, please give me RPMs. yep I understand ;) for me the patch has worked. I will submit a package to stable now. Hope it solves the issue. If not feel free to reopen the bug thanks jiri submitted a new yast2-live-installer without the workaround and now it crashes again as I said there could be many broken code in sax2 gui (xapi) and libsax at the moment because of the library change. back to this bug I can't reproduce a crash if it is related to comment #19. The following test code works for me --------snip-------- #!/usr/bin/perl use SaX; $exc = new SaX::SaXException; $exc -> setDebug (1); $init = new SaX::SaXInit; if ( $init -> needInit() ) { print ("initialize cache...\n"); $init -> doInit(); } $status = $init -> errorString(); print "++++ $status\n"; $config = new SaX::SaXConfig; $desktop = new SaX::SaXImport ( $SaX::SAX_DESKTOP ); $card = new SaX::SaXImport ( $SaX::SAX_CARD ); $path = new SaX::SaXImport ( $SaX::SAX_PATH ); $kbd = new SaX::SaXImport ( $SaX::SAX_KEYBOARD ); $desktop -> doImport(); $card -> doImport(); $path -> doImport(); $kbd -> doImport(); $manip2 = new SaX::SaXManipulateKeyboard ($kbd); $manip2 -> setXKBVariant ("us","basic"); exit (0); --------snap--------- Can you provide a perl test which makes the application to crash ? If so please provide the test and the /etc/X11/xorg.conf file thanks *** Bug 387773 has been marked as a duplicate of this bug. *** thanks for your test case, it at least shows some problems in valgrind Created attachment 213736 [details]
ycp test case
Reproduce the crash with:
/usr/lib/YaST2/bin/y2base ./inst_complex_welcome.ycp ncurses --no-threads
And Martin was right, the list was returning a 0 and casted away.
ok, with your latest patch "lifetime-support.patch" the crash is fixed I was able to run the suggested test case of comment #29 successfully your and Dirks patches have been checked in to the repository. thanks for the fix *** Bug 387585 has been marked as a duplicate of this bug. *** *** Bug 389097 has been marked as a duplicate of this bug. *** |
Created attachment 209836 [details] y2log of "yast2 --ncurses live-installer" Running as root "yast2 --ncurses live-installer" on gnome live cd, X flickers (actually, it shows console, but then returns to X) and segfaults at "Saving keyboard configuration": /sbin/yast2: line 420: 3550 Segmentation fault $ybindir/y2base $module "$@" "$SELECTED_GUI" $Y2_GEOMETRY $Y2UI_ARGS I'm attaching the entire y2log (I'm not sure what I'm looking for there).