[07:51] Should we add arm64 to the xubuntu-meta package before saucy releases? Or should i make a fix ready for merging as soon as t-series branches appear? [07:53] Adding another arch at the last second, with zero testing the entire cycle, and I'd guess nobody to take a quick run over at the last second anyway. [07:54] Personally I'd wait to see what the consensus is on the first question before working at all on the second [07:54] and +1 Unit193 [08:04] makes sense. [11:29] it's possible to hibernate system during live mode via menu, but not after the actual installation of (x)ubuntu [11:29] a bit confusing [12:00] a bit pointless as well :) [13:43] Noskcaj: The only thing in the wild with an arm64 chip is the iPhone 5S so, no, I don't think it would be especially worthwhile for us to put that on our release manifest at the moment for 13.10. [13:44] skellat: he's not here ;) [13:44] elfy: That's what I get for reading buffered backlog via ZNC several hours later [13:45] :) [13:45] Still, the point remains that the only arm64 chip in the wild touching consumer hands is in the iPhone 5S right this second so adding support in isn't worth it for 13.10 [13:46] I don't see much need to do it all tbh [13:46] Conventional armhf got thrown under the bus as it was [13:46] yep [13:47] Now is supposed to be the chill-out period...test, look for hyper-critical issues that need last-minute fixes, test, and chill-out [14:18] Has anyone else seen this message on the users' list? https://lists.ubuntu.com/archives/xubuntu-users/2013-October/006065.html [14:19] I get slightly different symptoms but I can confirm the problem on two different host machines. [14:19] And it seems to happen with Saucy and not Raring. [14:56] jjfrv8: maybe worth filing a lp report [14:59] brainwash, I was prepared to do that but I was afraid it would get shot down as a vbox issue. Doesn't seem like that to me, tho. [15:03] I'll try to reproduce this one later, but some sort of bug report would be still needed [15:05] Sure. I'd be glad to do it. [15:31] afternoon all [17:28] slickymaster: the users-admin segfault, the xfce4-terminal encoding menu one, and many others are all caused by glib 2.37 and newer [17:31] thad, do you mean, also https://bugs.launchpad.net/ubuntu/+source/xfce4-terminal/+bug/1206739 and https://bugs.launchpad.net/ubuntu/+source/xfce4-indicator-plugin/+bug/1181134 [17:31] Ubuntu bug 1206739 in xfce4-terminal (Ubuntu) "xfce4-terminal crashed with SIGSEGV in magazine_chain_pop_head()" [Medium,Confirmed] [17:31] Ubuntu bug 1181134 in xfce4-indicator-plugin (Ubuntu) "xfce4-indicator-plugin crashed with SIGSEGV in g_type_check_instance_cast()" [High,Triaged] [17:33] yea, there's something wrong with the memory chunk allocator [17:33] the applications did not change, but glib got pushed to 2.38 in saucy [17:34] thad, ^^^ you're right about that [17:36] maybe I can find a way to resolve this, well at least explain it somehow :) [17:37] thad, that would be great [18:54] thad: so do you know a version that worked? [18:59] attempting to build 2.36... [20:12] the build got all the way to the end, ran the tests, and then crashed out [20:13] after successfully completing every test [20:23] ali1234: what a bummer :/ [20:23] i am trying to debug it now but it is difficult [20:23] when gdb suspends it the menu is still open which makes it impossible to click on any other windows [20:24] or do anything at all, including kill gdb [20:25] what about valgrind? [20:26] i could run it in xnest [20:28] well, sadly I'm not a real expert [20:29] got it [20:29] it crashes in a different place now though [20:30] can you share any details? [20:31] http://paste.ubuntu.com/6233113/ [20:31] yea [20:31] number 4 is a big wtf [20:33] https://launchpadlibrarian.net/151908575/Stacktrace.txt [20:33] oh, i see, that's the problem [20:33] it's calling a callback and the pointer is totally nonsense [20:35] so, what can we blame for this madness? [20:36] don't know :/ [20:37] the trace continues: http://paste.ubuntu.com/6233140/ [20:39] maybe test the first 2.37 release and then do a bisect? [20:40] i don't know where to get that from [20:40] terminal_encoding_action_menu_shown looks like where it is crashing [20:40] yes [20:40] so i will just add printfs until i find it [20:41] g_slist_prepend [20:42] it's probably already corrupted by that point [20:43] which point? [20:45] so we have the for loop to fill the menu with the different encoding entries (GSList groups) [21:02] have you tested this bug without gtk the patched libxfce4ui installed? [21:02] for gtk3 indicators [21:07] what do you mean? [21:07] well, xfce4-terminal has a dependency on libxfce4ui which we rebuild for gtk3 indicators [21:07] the daily iso is affected, even the fedora 20 alpha [21:08] ok, just checking [21:08] the crash happens inside that loop btw, but not on the first loop through [21:08] most likely everything what switched to glib 2.37+ I assume [21:08] yes, not on the first loop run [21:12] item = gtk_menu_item_new_with_label (_(terminal_encodings_names[n])); <- crashes here [21:13] when n == 2 [21:13] which is "Baltic" in the build in string table [21:13] so, bad translation? [21:15] no, it still crashes if i remove the _() [21:16] sometimes it does crash on the 3rd run [21:20] always :/ [21:21] hmm [21:21] in fact it crashes before that line ^ [21:22] oh wait [21:25] now it is crashing without looping at all [21:27] so then, race condition [21:30] this makes no seeeeeense [21:30] i think i need to flush stdout or something [21:31] comment out this line: groups = g_slist_prepend (groups, item); [21:33] hmm [21:35] it crashes before that though [21:36] this really makes no sense [21:37] yea, still no clue, what's going wrong [21:37] hmmmmmmmmm [21:37] so [21:38] what s happening here is it adds the radio item and says "the items are in groups" [21:38] at that point groups is empty [21:38] then it puts the items into groups [21:39] wait, no [21:39] even the code doesn't make sense here [21:39] item = gtk_radio_menu_item_new_with_label (groups, default_label); [21:39] groups = g_slist_prepend (groups, item); [21:40] groups = g_slist_prepend (groups, item); <- this line apears in a lot of places, but the very first one makes no sense and appears to create a recursive menu definition [21:40] but i need to check the api docs [21:40] right, reading the api should help [21:41] so when you said comment the line, which one? [21:43] the one in the outer loop [21:43] yeah, that's the only one that makes a difference. i still don't understand why though, or what groups is even supposed to be [21:44] thad == brainwash? [21:44] yes, that's me [21:44] oki [21:44] it still crashes eventually [21:44] different PCs [21:45] *** Error in `terminal/xfce4-terminal': double free or corruption (out): 0x00007fe5434d0340 *** [21:45] *** Error in `terminal/xfce4-terminal': corrupted double-linked list: 0x00007fe5434d0310 *** [21:45] randomly? [21:45] seems like it [21:45] oh i get it [21:46] didn't crash for me, well, I don't even know what removing this line actually does :) [21:46] groups is the group of radio buttons [21:46] yes [21:46] it's the set of mutually exclusive options that the radio group belongs to [21:46] so it makes no sense to add anything other than radio buttons to it [21:46] so commenting that line is in fact the correct fix [21:46] so there is a problem with the list, right? [21:47] mmh, still weird [21:47] because it is trying to turn off a item whch is not a radio item [21:47] presumably this used to work but now causes a crash [21:47] didn't cause any trouble in raring [21:47] well, one way to find out is to make a simple test [21:48] which i will now try to do [21:48] also try to see if i can get it to crash with just that line commented [21:48] bet i can't though [21:48] you should add all these findings to the upstream report [21:49] can't seem to crash it [21:50] nice [21:50] well, I can't either :) [22:04] ok, added the info to the bug [22:04] mmh, do we have to free some memory? [22:05] just curious [22:05] what do you mean? [22:06] i'm still a little bit dubious of this code [22:06] but i don't know gtk enough to say if it is right or wrong [22:06] i would have expected creating a radio item and specifying the group would automatically add the item to the group [22:07] thus it should not be necessary to manually append things [22:07] we create these items, don't we have to free the memory afterwards? [22:07] otoh the empty group is a null pointer, so i don't understand how it keeps that stuff sorted out [22:07] no, if we do that the menu will disappear [22:08] so it's garbage collection? [22:08] well, valgrind can tell :D [22:08] eh, not really [22:08] this function is building the menu [22:09] some other functions tears it down [22:10] yea, but if we comment out the line, the item won't get added and can't be free afterwards, because it's not in the list... or? [22:10] freed [22:10] it doesn't get freed through the group [22:10] ah ok [22:11] the group is only used when you click on a radio item - it turns off all the other radio items in the group [22:11] all the menu items are in the menu and submenus, they get freed through that [22:11] that's why it crashes, because it calls turn_off_radio_item() on something that isn't a radio item [22:11] at least that is my working assumption [22:12] anyway the groups isn't saved either [22:12] it's only stuffed into the radio items themselves [22:12] the only reference to any of this stuff, once the function finishes, is via the gtk window -> gtk menu bar -> ... pointers [22:15] I need to learn more about C and GTK, it's a bit confusing without the right amount of knowledge [22:16] Gtk is incredibly confusing :( [22:16] castes everywhere [22:16] that's why stuff like this happens: you often can't tell what type of pointer you get - you have to just know and caste it appropriately [22:16] invalid one :D [22:16] ones [22:16] if you guessed wrong, it crashes [22:17] https://developer.gnome.org/gtk2/stable/GtkRadioMenuItem.html [22:17] are you going to debug the users-admin segfault too? [22:18] maybe [22:18] looking at the example code there ^ it does seem like the items are added automatically to the group. i think this code smells funny [22:19] link to users-admin bug? [22:20] wobug 1185396 [22:20] bu 1185396 [22:20] I give up [22:20] this keyboard is so weird, not used to it [22:37] hmm this groups code must be okay - when you make a new item and pass in the group, it must update the group pointer in all the items in the group to point to the new group [22:38] because there's no other way it could work [22:38] and that is almost certainly what crashes [22:38] because the non-radio item doesn't have a pointer to the group list, so when it tries to set it... bang [22:39] that's why it crashes during setup, not when you actually click something [22:39] so we wait until the fix gets approved upstream? [22:41] because it makes sense now [22:41] we could go ahead and include it before [22:42] hmm otoh it could be broken still :/ [22:42] or rather, it might only work by accident [22:42] this all boils down to a simple thing: GSList is a simple linked list [22:42] empty list is NULL [22:43] if you add an item to the empty list you get [item, NULL] [22:43] if you do it again, you get [item, NULL] again, but it is a different list [22:44] there is no way to store a reference to a GSList that updates all the copies of it [22:44] BUT this is only true when prepending [22:44] why not append? [22:44] because you can't append to NULL [22:45] mmh, ok [22:45] so i think what happens here is that every radio item has a different copy of the same list [22:46] in fact it probably ends up looking like a tree [22:46] i should just read the source and find out i guess [22:46] but at the moment... i still think this code is fishy [22:47] still not sure, why g_slist_append() shouldn't work [22:47] maybe I'm way too confused at this point [22:49] what does "different copy of the same list" mean? [22:49] rowboatn1ck: linked list is a structure like { int: value; pointer: next; } [22:50] without looking too hard, it looks like every radiobutton gets a pointer to the current element [22:50] not quite [22:50] we store a reference to the linked list as just a point. so to start with it is NULL [22:51] yes [22:51] we prepend one item and we get pointer to: [{0xF00, NULL}] [22:51] yes [22:51] let a = this pointer [22:52] i dont think that happens [22:52] i think its initally NULL, it gets passed, gets assigned an address to newly allocated memory [22:52] the next iteration you pass that, it allocates a new again and assign [22:52] now prepend to a and we get pointer to: [{0xF01, a} -> {0xF00, NULL}] [22:53] prepend to a again and you get [{0xF02, a} -> {0xF00, NULL}] [22:54] yes, but 0xF02's prev would be 0xF01 [22:54] no, it wouldn't [22:54] a doesn't change [22:54] you get a new pointer back [22:55] but the old pointer still points to the same thing as before [22:55] in lack of a better term, the "old pointer"'s 'next' still points to NULL? [22:56] yes [22:56] that is very, very odd [22:56] it's how linked lists have worked since forever :) [22:56] i'm going to have to code to up to see what really happens [22:57] no, what would happen is, you pass NULL, it creates a node, set next to NULL [22:57] because basically however it works, this code is wrong imo [22:57] yes [22:57] then returns the node [22:57] but if you do it again, the SAME node as *this*, should NOT be NULL [22:57] if you pass in NULL again you get a new node [23:00] I would imagine, in this example, it worked like this: pass NULL, get address to current node, next iteration, pass that address, get address to new node, and again and again [23:03] yes [23:03] but that is not what xfce4-terminal does [23:04] http://paste.ubuntu.com/6233700/ <- is the prepend function [23:04] when you prepend some data, it makes a new node and makes it point to whatever list you passed in [23:05] so if you prepend the same data to the same list twice, you get two lists that share all but the first item [23:05] this is what xfce terminal is doing [23:08] when you make a new radio item it prepends itself to the list you pass in [23:09] then if the original list passed in was not null, it updates all the other radio items with the new list [23:09] xfce4-terminal then prepends the new item to the old list again, creating a new, different list [23:09] this is then passed in to the next item created, and so on [23:10] so each time you open that menu, it leaks a g_slist_node for each encoding type... which is bad [23:13] i see [23:16] so I wasn't wrong about the allocated memory not being freed? [23:17] it shouldnt have to be free'd to do this [23:18] brainwash: no, you were wrong. it doesn't have to be manually freed. the function is actually allocating things twice and only one of them will be freed, the other is lost (there is no longer any reference to it) [23:18] ah ok [23:18] still bad [23:19] luckily the solution is very simple: just do it the way the example shows [23:45] brainwash: i added a patch: http://bug-attachment.xfce.org/attachment.cgi?id=5186 [23:46] ali1234: reading your comment currently, impressive job, it explains everything :) [23:48] patch looks ok, I'll test it later too [23:49] is anyone interested in helping to maintain blueman?/ [23:58] micahg: just curious, what work needs to be done?