Summary: | [Gtk] Crash when saving a password | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Bastien Nocera <bugzilla> | ||||
Component: | WebKitGTK | Assignee: | Nobody <webkit-unassigned> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | gustavo, jmalonzo, xan.lopez | ||||
Priority: | P2 | Keywords: | Gtk | ||||
Version: | 528+ (Nightly build) | ||||||
Hardware: | PC | ||||||
OS: | Linux | ||||||
Bug Depends on: | |||||||
Bug Blocks: | 28463 | ||||||
Attachments: |
|
Description
Bastien Nocera
2009-08-07 09:07:47 PDT
CC'ing Gustavo and Xan who are more familiar with libsoup and gnome-keyring in WebKitGtk. This code has been changed in latest trunk, could you try again with it (you'll need libsoup master) and tell us if it still crashes? You can also wait for the 1.1.13 release, which will happen soon. Epiphany 2.27.91, libsoup 2.27.91 and WebKitGTK+ 1.1.13 are now released. Seems to still happen. I think I found the problem, I am testing the fix (waiting for build to finish). I have tried debugging this. We seem to have a problem with the reference counting of authData->auth (we do a g_object_unref on it without doing a g_object_ref), but the fact is adding g_object_ref to the initialization of auth, and to just after authenticated doesn't help. We still reach the save password callback with authData->auth as 0x0. This seems to be caused by memory corruption. I was unable to find out what is the actual problem, though. Valgrind log: ==12869== ==12869== Syscall param write(buf) points to uninitialised byte(s) ==12869== at 0xCCC852B: (within /lib/libpthread-2.9.so) ==12869== by 0xE6219E6: unixWrite (sqlite3.c:23842) ==12869== by 0xE5D713E: writeJournalHdr (sqlite3.c:11929) ==12869== by 0xE5D722C: pager_open_journal (sqlite3.c:34594) ==12869== by 0xE5D7357: sqlite3PagerBegin (sqlite3.c:34669) ==12869== by 0xE5E02B3: sqlite3BtreeBeginTrans (sqlite3.c:39351) ==12869== by 0xE5F8E65: sqlite3VdbeExec (sqlite3.c:53624) ==12869== by 0xE5FF887: sqlite3_step (sqlite3.c:49507) ==12869== by 0xE602A2C: sqlite3_exec (sqlite3.c:72147) ==12869== by 0x6FBFD38: exec_query_with_try_create_table (soup-cookie-jar-sqlite.c:242) ==12869== by 0x6FC0118: changed (soup-cookie-jar-sqlite.c:295) ==12869== by 0xB7E951C: g_closure_invoke (gclosure.c:767) ==12869== Address 0x14d544c9 is 9 bytes inside a block of size 1,032 alloc'd ==12869== at 0x4C2391E: malloc (vg_replace_malloc.c:207) ==12869== by 0xE61FFC1: sqlite3MemMalloc (sqlite3.c:12342) ==12869== by 0xE5BA748: mallocWithAlarm (sqlite3.c:15530) ==12869== by 0xE5BA81F: sqlite3Malloc (sqlite3.c:15558) ==12869== by 0xE5BBE82: pcache1Alloc (sqlite3.c:29512) ==12869== by 0xE5BBFA5: sqlite3PageMalloc (sqlite3.c:29583) ==12869== by 0xE5C3FD6: sqlite3PagerSetPagesize (sqlite3.c:32906) ==12869== by 0xE5DF037: sqlite3BtreeFactory (sqlite3.c:33837) ==12869== by 0xE5E6837: openDatabase (sqlite3.c:92579) ==12869== by 0x6FC00E0: changed (soup-cookie-jar-sqlite.c:285) ==12869== by 0xB7E951C: g_closure_invoke (gclosure.c:767) ==12869== by 0xB7FF934: signal_emit_unlocked_R (gsignal.c:3177) libsoup-CRITICAL **: soup_auth_save_password: assertion `SOUP_IS_AUTH (auth)' fa iled aborting... ==12869== ==12869== Process terminating with default action of signal 5 (SIGTRAP): dumping core ==12869== at 0xBA668CC: g_logv (gmessages.c:512) ==12869== by 0xBA66C22: g_log (gmessages.c:526) ==12869== by 0x512417A: save_password_callback (webkitsoupauthdialog.c:105) ==12869== by 0xB7E951C: g_closure_invoke (gclosure.c:767) ==12869== by 0xB80003D: signal_emit_unlocked_R (gsignal.c:3247) ==12869== by 0xB8015EE: g_signal_emit_valist (gsignal.c:2980) ==12869== by 0xB801AF2: g_signal_emit (gsignal.c:3037) ==12869== by 0x6D99B5F: io_read (soup-message-io.c:835) ==12869== by 0xB7E951C: g_closure_invoke (gclosure.c:767) ==12869== by 0xB80003D: signal_emit_unlocked_R (gsignal.c:3247) ==12869== by 0xB8015EE: g_signal_emit_valist (gsignal.c:2980) ==12869== by 0xB801AF2: g_signal_emit (gsignal.c:3037) Created attachment 40230 [details]
soupauthfix.diff
Proposed patch.
Comment on attachment 40230 [details]
soupauthfix.diff
Rubber stamp = me.
|