From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dan Nicolaescu Newsgroups: gmane.emacs.bugs Subject: bug#9990: valgrind warning in add_row_entry Date: Fri, 11 Nov 2011 00:56:18 -0500 Message-ID: References: <83k47ailf0.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 1320991020 23966 80.91.229.12 (11 Nov 2011 05:57:00 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 11 Nov 2011 05:57:00 +0000 (UTC) Cc: 9990@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Nov 11 06:56:53 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1ROk6e-0003JM-Lp for geb-bug-gnu-emacs@m.gmane.org; Fri, 11 Nov 2011 06:56:52 +0100 Original-Received: from localhost ([::1]:44911 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ROk6e-0000ap-3k for geb-bug-gnu-emacs@m.gmane.org; Fri, 11 Nov 2011 00:56:52 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:48655) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ROk6a-0000aX-VV for bug-gnu-emacs@gnu.org; Fri, 11 Nov 2011 00:56:49 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ROk6Z-0004RH-Na for bug-gnu-emacs@gnu.org; Fri, 11 Nov 2011 00:56:48 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:43694) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ROk6Z-0004RD-H2 for bug-gnu-emacs@gnu.org; Fri, 11 Nov 2011 00:56:47 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1ROk6n-0000Bi-OO for bug-gnu-emacs@gnu.org; Fri, 11 Nov 2011 00:57:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Dan Nicolaescu Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 11 Nov 2011 05:57:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 9990 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 9990-submit@debbugs.gnu.org id=B9990.1320990996684 (code B ref 9990); Fri, 11 Nov 2011 05:57:01 +0000 Original-Received: (at 9990) by debbugs.gnu.org; 11 Nov 2011 05:56:36 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ROk6O-0000Az-HO for submit@debbugs.gnu.org; Fri, 11 Nov 2011 00:56:36 -0500 Original-Received: from fencepost.gnu.org ([140.186.70.10] ident=Debian-exim) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ROk6L-0000Ap-OI for 9990@debbugs.gnu.org; Fri, 11 Nov 2011 00:56:34 -0500 Original-Received: from dann by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1ROk66-0004ba-CL; Fri, 11 Nov 2011 00:56:18 -0500 In-Reply-To: <83k47ailf0.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 08 Nov 2011 19:17:07 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Fri, 11 Nov 2011 00:57:01 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:53800 Archived-At: Eli Zaretskii writes: >> From: Dan Nicolaescu >> Date: Tue, 08 Nov 2011 09:27:06 -0500 >> >> >> valgrind ./temacs -Q gets this warning: >> >> ==7487== Use of uninitialised value of size 8 >> ==7487== at 0x4140F4: update_window (dispnew.c:4212) >> ==7487== by 0x414F32: update_window_tree (dispnew.c:3326) >> ==7487== by 0x414F0E: update_window_tree (dispnew.c:3324) >> ==7487== by 0x4181FD: update_frame (dispnew.c:3253) >> ==7487== by 0x443EDB: redisplay_internal (xdisp.c:13175) >> ==7487== by 0x4F6F47: read_char (keyboard.c:2443) >> ==7487== by 0x4F9406: read_key_sequence.constprop.14 (keyboard.c:9290) >> ==7487== by 0x4FB0D4: command_loop_1 (keyboard.c:1447) >> ==7487== by 0x560015: internal_condition_case (eval.c:1499) >> ==7487== by 0x4EE4AD: command_loop_2 (keyboard.c:1158) >> ==7487== by 0x55FEF7: internal_catch (eval.c:1256) >> ==7487== by 0x4EFA36: recursive_edit_1 (keyboard.c:1137) >> ==7487== >> ==7487== >> ==7487== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- Y >> >> The line in question is: >> >> 4212 entry = row_table[i]; >> >> >> (gdb) p i >> $1 = 0x157 >> (gdb) p row_table[i] >> $2 = (struct row_entry *) 0x0 >> (gdb) p row_table_size >> $3 = 0x193 >> >> Is it possible for the contents of row_table to be uninitialized? Is this warning a false positive? > > row_table and row_table_size are static variables. So at least in > temacs they should be initialized to zero, by this code in > scrolling_window: > > n = desired_matrix->nrows; > n += current_matrix->nrows; > if (row_table_size < 3 * n) > { > ptrdiff_t size = next_almost_prime (3 * n); > row_table = xnrealloc (row_table, size, sizeof *row_table); > row_table_size = size; > memset (row_table, 0, size * sizeof *row_table); > } > > Because row_table_size is initially zero, the first call to > scrolling_window will allocate row_table[] and zero it out. > > The only call to add_row_entry, the function where line 4212 belongs, > is in the same scrolling_window, a few lines _below_ the above > fragment that allocates and zeroes out row_table[]. > > So I don't see how row_table[i] could be uninitialized for any i that > is less than row_table_size. > > Does valgrind know that row_table_size is initially zero because it is > static? I think it should. I got another (maybe) similar one. For this one I had the option that shows the location of uninitialized variable. This happened after doing C-h H. ==4752== Conditional jump or move depends on uninitialised value(s) ==4752== at 0x4137ED: update_window (dispnew.c:1276) ==4752== by 0x414F02: update_window_tree (dispnew.c:3326) ==4752== by 0x4181CD: update_frame (dispnew.c:3253) ==4752== by 0x440E7B: redisplay_internal (xdisp.c:13175) ==4752== by 0x4F0A87: read_char (keyboard.c:2443) ==4752== by 0x4F2F46: read_key_sequence.constprop.14 (keyboard.c:9290) ==4752== by 0x4F4C14: command_loop_1 (keyboard.c:1447) ==4752== by 0x559B55: internal_condition_case (eval.c:1499) ==4752== by 0x4E7FED: command_loop_2 (keyboard.c:1158) ==4752== by 0x559A37: internal_catch (eval.c:1256) ==4752== by 0x4E94EE: recursive_edit_1 (keyboard.c:1123) ==4752== by 0x515CFB: read_minibuf (minibuf.c:677) ==4752== Uninitialised value was created by a heap allocation ==4752== at 0x4A0649D: malloc (vg_replace_malloc.c:236) ==4752== by 0x5407CF: xrealloc (alloc.c:742) ==4752== by 0x411001: adjust_glyph_matrix (dispnew.c:580) ==4752== by 0x41148C: allocate_matrices_for_window_redisplay (dispnew.c:1838) ==4752== by 0x4119DC: adjust_frame_glyphs (dispnew.c:2167) ==4752== by 0x416BC9: adjust_glyphs (dispnew.c:1860) ==4752== by 0x4686A7: Fdelete_other_windows_internal (window.c:2809) ==4752== by 0x55B9FB: Ffuncall (eval.c:2977) ==4752== by 0x593BE5: exec_byte_code (bytecode.c:785) ==4752== by 0x55AE2A: eval_sub (eval.c:2328) ==4752== by 0x559A37: internal_catch (eval.c:1256) ==4752== by 0x594567: exec_byte_code (bytecode.c:966) ==4752== > and see what are the values of first_old, last_old, first_new, and > last_new here, and whether the corresponding glyph rows look > reasonable, including their hash values? Or maybe just look at the > row passed to add_row_entry. You can display a given glyph_row > structure with the pgrowx command in GDB (but it won't show the hash > value, only how the row will look on the screen). Another command is > prowx. I will do this when it happens again.