Bugzilla – Bug 998152
Error in setting default boot entry (due non-latin symbols)
Last modified: 2018-09-07 13:38:12 UTC
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0 Build Identifier: Error when trying to select default boot section in Yast2->bootloader->bootlodaer-option Reproducible: Always Steps to Reproduce: 0.Install openSUSE or update bootloader from Yast2 with Russian locale 1.Start Yast2 (gui or ncurses) 2.Select "System" - "Bootloader" 3.Goto "Bootloader Options" 4.Select default boot section in "Default Boot Section" 5 Press "OK" Actual Results: The error appears: Internal error. Please report a bug report with logs. Details: Unknown value "openSUSE Tumbleweed , \u0441 Linux 4.6.4-2-default" Caller: /usr/share/YaST2/lib/bootloader/sections.rb:41:in `default=' Expected Results: Applied default boot section. Problem appears only if boot entry has Cyrillic symbols (or maybe non-latin). When I manually changed entry from: menuentry 'openSUSE Tumbleweed , с Linux 4.6.4-2-default' ("с" is cyrillic) to menuentry 'openSUSE Tumbleweed , with Linux 4.6.4-2-default' problem gone. Or you can run LC_ALL Yast2 and recreate grub.cfg with English locale.
Created attachment 691645 [details] tail -n 30 y2log
small correction: problem gone. Or you can run LC_ALL=C Yast2 and recreate grub.cfg with English locale.
I could reproduce this, also happens with sle12-sp2. It's also a bit related to bug 985946. There are actually two issues: 1) yast crashing as described here 2) yast is not using /etc/sysconfig/language::RC_LANG (cf. bug 985946) essentially resetting the grub language to the locale yast is run in Josef, could you look into this?
yes, will check
fix is under review https://github.com/yast/yast-bootloader/pull/374
fix merged. If it still happen in TW with yast2-bootloader 3.2.5 or newer, please reopen with fresh logs. Thanks
Still get error: 2016-11-07 18:18:17 <1> Kot(13104) [Ruby] lib/cheetah.rb:158 Executing "/usr/bin/grub2-editenv list". 2016-11-07 18:18:18 <1> Kot(13104) [Ruby] lib/cheetah.rb:206 Standard output: saved_entry=openSUSE Tumbleweed 2016-11-07 18:18:18 <1> Kot(13104) [Ruby] lib/cheetah.rb:178 Status: 0 2016-11-07 18:18:23 <1> Kot(13104) [Ruby] bootloader/sections.rb:38 set new default to '"openSUSE Tumbleweed, \u0441 Linux 4.8.6-1-default"' 2016-11-07 18:18:23 <3> Kot(13104) [Ruby] yast/wfm.rb:235 Client call failed with 'Unknown value "openSUSE Tumbleweed, \u0441 Linux 4.8.6-1-default"' and backtrace ["/usr/share/YaST2/lib/bootloader 2016-11-07 18:18:23 <3> Kot(13104) [Ruby] yast/wfm.rb:256 Internal error. Please report a bug report with logs. Details: Unknown value "openSUSE Tumbleweed, \u0441 Linux 4.8.6-1-default" Caller: /usr/share/YaST2/lib/bootloader/sections.rb:41:in `default=' rpm -qi yast2-bootloader Name : yast2-bootloader Version : 3.2.6 Release : 1.1 Architecture: x86_64 Install Date: Вс 06 ноя 2016 16:20:58 Group : System/YaST Size : 220007 License : GPL-2.0+ Signature : RSA/SHA256, Чт 03 ноя 2016 23:29:14, Key ID b88b2fd43dbdc284 Source RPM : yast2-bootloader-3.2.6-1.1.src.rpm Build Date : Чт 03 ноя 2016 23:29:07 Build Host : cloud129 Relocations : (not relocatable) Packager : http://bugs.opensuse.org Vendor : openSUSE URL : http://github.com/yast/yast-bootloader Summary : YaST2 - Bootloader Configuration Description : This package contains the YaST2 component for bootloader configuration. Distribution: openSUSE Tumbleweed
(In reply to Konstantin Voinov from comment #7) > Still get error: > > 2016-11-07 18:18:17 <1> Kot(13104) [Ruby] lib/cheetah.rb:158 Executing > "/usr/bin/grub2-editenv list". > 2016-11-07 18:18:18 <1> Kot(13104) [Ruby] lib/cheetah.rb:206 Standard > output: saved_entry=openSUSE Tumbleweed > 2016-11-07 18:18:18 <1> Kot(13104) [Ruby] lib/cheetah.rb:178 Status: 0 > 2016-11-07 18:18:23 <1> Kot(13104) [Ruby] bootloader/sections.rb:38 set new > default to '"openSUSE Tumbleweed, \u0441 Linux 4.8.6-1-default"' > 2016-11-07 18:18:23 <3> Kot(13104) [Ruby] yast/wfm.rb:235 Client call failed > with 'Unknown value "openSUSE Tumbleweed, \u0441 Linux 4.8.6-1-default"' and > backtrace ["/usr/share/YaST2/lib/bootloader > 2016-11-07 18:18:23 <3> Kot(13104) [Ruby] yast/wfm.rb:256 Internal error. > Please report a bug report with logs. > Details: Unknown value "openSUSE Tumbleweed, \u0441 Linux 4.8.6-1-default" > Caller: /usr/share/YaST2/lib/bootloader/sections.rb:41:in `default=' > > rpm -qi yast2-bootloader > Name : yast2-bootloader > Version : 3.2.6 > Release : 1.1 > Architecture: x86_64 > Install Date: Вс 06 ноя 2016 16:20:58 > Group : System/YaST > Size : 220007 > License : GPL-2.0+ > Signature : RSA/SHA256, Чт 03 ноя 2016 23:29:14, Key ID b88b2fd43dbdc284 > Source RPM : yast2-bootloader-3.2.6-1.1.src.rpm > Build Date : Чт 03 ноя 2016 23:29:07 > Build Host : cloud129 > Relocations : (not relocatable) > Packager : http://bugs.opensuse.org > Vendor : openSUSE > URL : http://github.com/yast/yast-bootloader > Summary : YaST2 - Bootloader Configuration > Description : > This package contains the YaST2 component for bootloader configuration. > Distribution: openSUSE Tumbleweed OK, so please attach complete y2logs and also /etc/default/grub, so I can see how it is generated. Thanks
Created attachment 701029 [details] y2log
Created attachment 701030 [details] /etc/default/grub
hmm, I do not even see call to grub2-mkconfig. Can you please also attach content of /etc/sysconfig/language and /boot/grub2/grub.cfg ? so we see what is system-wide locale and also target config, even if mkconfig is not called? Thanks Now it looks like some escaping is missing. Thanks
Created attachment 701051 [details] /etc/sysconfig/language
Created attachment 701052 [details] /boot/grub2/grub.cfg
Thanks for logs. Now I will do some testing of code as it looks properly generated. The last think I notice is that it is menu in submenu, but only part of name is used. Can you please also attach output of `rpm -qa` so I see versions of packages? As maybe cfa_grub2 is older then I expect.
Created attachment 701055 [details] rpm -qa|grep grub
Created attachment 701056 [details] rpm -qa Part of name? I believe the problem is in symbol "с" (U+0441), when yast parsing menu entries.
I also thought it, but I do local testing with your grub.cfg and it works for all variants of that string from log: "openSUSE Tumbleweed, с Linux 4.8.6-2-default" "openSUSE Tumbleweed, \u0441 Linux 4.8.6-2-default" "openSUSE Tumbleweed, \xD1\x81 Linux 4.8.6-2-default" all of them works when testing locally. but I will try to do more tests. Maybe somewhere in between something goes wrong and it is double escaped.
Hi. I've a windows boot manager in the yast (Tumbleweed). It wrote "Windows Boot Manager (на /dev/sda2)". на(rus)=on(en) and "openSUSE Tumbleweed, с Linux 4.9.4-1-default" "с"(rus)=with(en) And I've got after OK: Error Internal error. Please report a bug report with logs. Details: Unknown value "openSUSE Tumbleweed, \u0441 Linux 4.9.4-1-default" Caller: /usr/share/YaST2/lib/bootloader/sections.rb:34:in `default=' \u0441 = russian "с" =================================== Nick
*** Bug 1029307 has been marked as a duplicate of this bug. ***
I have been able to reproduce the error with 42.2 but not with 42.3 SLES12_SP3 SLES15 anymore, although the code of 42.2 and SLES12_SP3 is the same in that area. The problem is a simple string compare with these special strings which fails. I am assuming that it is ruby problem ( ruby 2.1.2p95(42.2) ruby 2.1.9p490 (SLE12_SP3)) Additional, in SLES15 and leap15 the code has changed. So the exception has been removed completely and cannot happen anymore. https://github.com/yast/yast-bootloader/blob/8b8f06a952e2ec0323dfbbbb89cf798b0b103a5b/src/lib/bootloader/sections.rb#L34 As it is quite old we will not fix this issue ( or find a workaround of the ruby bug). Please update to newer releases.