From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dan Nicolaescu Newsgroups: gmane.emacs.devel Subject: Re: valgrind warnings [Re: Emacs bzr memory footprint] Date: Fri, 28 Oct 2011 12:34:07 -0400 Message-ID: References: <87aa93wmc4.fsf@turtle.gmx.de> <87sjmnrdjw.fsf@spindle.srvr.nix> <87ty73mc0m.fsf@spindle.srvr.nix> <4EA19111.7060401@yandex.ru> <87vcrhfmww.fsf@uwakimon.sk.tsukuba.ac.jp> <87pqhpf1qo.fsf@uwakimon.sk.tsukuba.ac.jp> <87k47qaxvz.fsf@lifelogs.com> <83bot1bovw.fsf@gnu.org> <87y5w531eo.fsf@uwakimon.sk.tsukuba.ac.jp> <83zkgla1mg.fsf@gnu.org> <87vcr92z6x.fsf@uwakimon.sk.tsukuba.ac.jp> <83ty6t9zd0.fsf@gnu.org> <83obx19lvo.fsf@gnu.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: dough.gmane.org 1319819663 16943 80.91.229.12 (28 Oct 2011 16:34:23 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 28 Oct 2011 16:34:23 +0000 (UTC) Cc: stephen@xemacs.org, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Oct 28 18:34:17 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RJpNm-0003RA-Nj for ged-emacs-devel@m.gmane.org; Fri, 28 Oct 2011 18:34:14 +0200 Original-Received: from localhost ([::1]:51925 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJpNm-0002eB-7C for ged-emacs-devel@m.gmane.org; Fri, 28 Oct 2011 12:34:14 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:42565) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJpNj-0002e2-AI for emacs-devel@gnu.org; Fri, 28 Oct 2011 12:34:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RJpNh-00055K-Ub for emacs-devel@gnu.org; Fri, 28 Oct 2011 12:34:11 -0400 Original-Received: from fencepost.gnu.org ([140.186.70.10]:40024) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJpNh-00055G-T0 for emacs-devel@gnu.org; Fri, 28 Oct 2011 12:34:09 -0400 Original-Received: from dann by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1RJpNf-0001Eq-SQ; Fri, 28 Oct 2011 12:34:07 -0400 In-Reply-To: <83obx19lvo.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 28 Oct 2011 17:27:55 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.10 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:145719 Archived-At: Eli Zaretskii writes: >> From: Dan Nicolaescu >> Cc: "Stephen J. Turnbull" , emacs-devel@gnu.org >> Date: Fri, 28 Oct 2011 10:38:03 -0400 >> >> > Valgrind produces these warnings, maybe some of them are interesting: >> > >> > ==30382== Conditional jump or move depends on uninitialised value(s) >> > ==30382== at 0x4731E6: note_mouse_highlight (xdisp.c:26841) >> > ==30382== by 0x4F8682: note_mouse_movement (xterm.c:3830) >> > ==30382== by 0x4FCB2E: handle_one_xevent (xterm.c:6652) >> > ==30382== by 0x4FD792: XTread_socket (xterm.c:7133) >> > ==30382== by 0x5437F7: read_avail_input (keyboard.c:6821) >> > ==30382== by 0x54409F: handle_async_input (keyboard.c:7149) >> > ==30382== by 0x5440BE: process_pending_signals (keyboard.c:7165) >> > ==30382== by 0x62D713: wait_reading_process_output (process.c:4340) >> > ==30382== by 0x419ED2: sit_for (dispnew.c:5971) >> > ==30382== by 0x53AF87: read_char (keyboard.c:2687) >> > ==30382== by 0x548876: read_key_sequence (keyboard.c:9290) >> > ==30382== by 0x538709: command_loop_1 (keyboard.c:1447) >> >> This is because window_from_coordinates in note_mouse_highlight is >> passed "&part", where "part" is an uninitialized local variable. >> When !NILP(window) "part" is not touched, so it stays uninitialized. > > That's not my reading of the code. Here's what happens in > window_from_coordinates: > > window = Qnil; > cw.window = &window, cw.x = x, cw.y = y; cw.part = part; > foreach_window (f, check_window_containing, &cw); > > So cw.part now holds "part", which is a pointer. > check_window_containing does this: > > found = coordinates_in_window (w, cw->x, cw->y); > if (found != ON_NOTHING) > { > *cw->part = found; > XSETWINDOW (*cw->window, w); > > So if it finds a window, it touches "part" through cw->part and sets > `window' (through cw->window) to a non-nil value. Now back in > window_from_coordinates: > > if (NILP (window) > && tool_bar_p > && WINDOWP (f->tool_bar_window) > && WINDOW_TOTAL_LINES (XWINDOW (f->tool_bar_window)) > 0 > && (coordinates_in_window (XWINDOW (f->tool_bar_window), x, y) > != ON_NOTHING)) > { > *part = ON_TEXT; > window = f->tool_bar_window; > } > > If `window' is non-nil, "part" was already set inside > check_window_containing, so there's no need to set it again. > > Am I missing something or did this tricky code dupe valgrind? I don't know anything about this code... A quick hack to initialize part with -42 and then abort if it's still -42 before "part != ON_TEXT && part != ON_MODE_LINE && part != ON_HEADER_LINE" does indeed call abort...