Friday 25th June 2010
Fedora Project
Finally got round to debugging a segfault in gtorrentviewer (Bug #542502 and Bug #572806), which turned out to be straightforward as one of the bug reporters took the trouble to provide a reliable reproducer of the bug; in the end it was the simple matter of a GValue being declared as a local variable in a function and not initialized to zero before use, resulting in this stack trace:
[New Thread 23163] Core was generated by `gtorrentviewer /storage/data/torrents-new/xxxx'. Program terminated with signal 11, Segmentation fault. #0 0x000000340cc28f9c in type_check_is_value_type_U (value=0x7fffdbacac80, type=64) at gtype.c:3836 3836 gtype.c: No such file or directory. in gtype.c ... Thread 1 (Thread 23160): #0 0x000000340cc28f9c in type_check_is_value_type_U (value=0x7fffdbacac80, type=64) at gtype.c:3836 tflags = G_TYPE_FLAG_VALUE_ABSTRACT node = 0x2224010 #1 IA__g_type_check_value_holds (value=0x7fffdbacac80, type=64) at gtype.c:3878 No locals. #2 0x000000340cc31219 in IA__g_value_set_string (value=0x7fffdbacac80, v_string=0x22c4560 "http://tracker.openbittorrent.com/announce") at gvaluetypes.c:922 __val = 0x7fffdbacac80 __r = <value optimized out> _g_boolean_var_ = <value optimized out> new_val = 0x22c4560 "http://tracker.openbittorrent.com/announce" __PRETTY_FUNCTION__ = "IA__g_value_set_string" #3 0x0000000000407aa6 in on_RefreshTrackerButton_clicked ( mwin=<value optimized out>, user_data=<value optimized out>) at mainwindow.c:753 iter = {stamp = -1347712751, user_data = 0x22e5830, user_data2 = 0x0, user_data3 = 0x0} itemvalue = {g_type = 35799056, data = {{v_int = 214096389, v_uint = 214096389, v_long = 223552395781, v_ulong = 223552395781, v_int64 = 223552395781, v_uint64 = 223552395781, v_float = 3.00216485e-31, v_double = 1.1044955880089772e-312, v_pointer = 0x340cc2da05}, { v_int = 36582800, v_uint = 36582800, v_long = 36582800, v_ulong = 36582800, v_int64 = 36582800, v_uint64 = 36582800, v_float = 1.27988727e-37, v_double = 1.8074304708681154e-316, v_pointer = 0x22e3590 } }} err = 0x340cc1894c
- The fix was as simple as this:
--- GTorrentViewer-0.2b/src/mainwindow.c.orig 2004-10-26 05:37:58.000000000 +0100 +++ GTorrentViewer-0.2b/src/mainwindow.c 2010-06-25 14:43:22.391786427 +0100 @@ -744,7 +744,7 @@ { GtkListStore *list; GtkTreeIter iter; - GValue itemvalue; + GValue itemvalue = {0}; gchar *tracker; GError *err;
Local Packages
Updated gtorrentviewer as per the Fedora package, fixing a crash when the "Refresh" button on the "Tracker Details" tab was pushed
Rebuilt libspf2 for perl 5.12.1 in Rawhide and added -fno-strict-aliasing compiler option
Updated perl-Number-Compare with patch from CPAN RT#58466 to fix "uninitialized value in comparison" warnings (raised as Bug #607982 in Fedora)
Updated perl-YAML-Tiny to 1.42:
- No functional changes
Clarified documation regarding treatment of "bool" keywords
YAML::Perl comparison tests were behaving incorrectly
Author tests updated and moved into xt/
- Updated the versions of the other YAML parsers for testing
Completed the rebuild of Rawhide packages for perl 5.12.1: bw-whois, grepmail, perl-Array-Compare, perl-Carp-Clan, perl-Class-C3-XS, perl-Class-Factory-Util, perl-Class-Inspector, perl-Class-MOP, perl-Class-Singleton, perl-ConfigReader-Simple, perl-Convert-BinHex, perl-Convert-TNEF, perl-Convert-UUlib, perl-DBD-SQLite, perl-DBI, perl-DBM-Deep, perl-DateTime-Calendar-Mayan, perl-DateTime-Format-Builder, perl-DateTime-Format-MySQL, perl-DateTime-Format-Strptime, perl-DateTime, perl-Declare-Constraints-Simple, perl-Devel-GlobalDestruction, perl-Devel-StackTrace, perl-Devel-Symdump, perl-Digest-BubbleBabble, perl-Email-Address, perl-Error, perl-Expect, perl-ExtUtils-CBuilder, perl-File-Find-Rule-Perl, perl-File-Find-Rule, perl-File-Remove, perl-FileHandle-Fmode, perl-HTML-Lint, perl-HTML-SimpleLinkExtor, perl-HTTP-SimpleLinkChecker, perl-HTTP-Size, perl-Hook-LexWrap, perl-IO-Multiplex, perl-IO-Socket-INET6, perl-IO-Socket-SSL, perl-IO-Tty, perl-IO-stringy, perl-IPC-Run, perl-Jcode, perl-LMAP-CID2SPF, perl-Locale-US, perl-MIME-tools, perl-Mail-IMAPClient, perl-Mail-SPF-Query, perl-Mail-SPF-Test, perl-Mail-SPF, perl-Mail-SRS, perl-Mail-Sender, perl-Mail-Sendmail, perl-MailTools, perl-Module-Pluggable, perl-Module-Refresh, perl-Moose, perl-Net-CIDR-Lite, perl-Net-CIDR, perl-Net-DNS-Resolver-Programmable, perl-Net-DNS, perl-Net-IP, perl-Net-LibIDN, perl-Net-SMTP-SSL, perl-Net-SSLeay, perl-Net-Server, perl-NetAddr-IP, perl-Package-Constants, perl-Package-Stash, perl-Params-Coerce, perl-Params-Validate, perl-Parse-CPAN-Meta, perl-Pod-Escapes, perl-Pod-Simple, perl-Readonly-XS, perl-Readonly, perl-Regexp-Common, perl-SUPER, perl-Scope-Guard, perl-Sendmail-PMilter, perl-Socket6, perl-TimeDate, perl-version, and weblint++