|
From: Susan M. <baj...@ho...> - 2009-10-10 16:41:45
|
Hello, everyone! I am certain that I have a memory leak somewhere in my code, because it eats all of the memory on my machine and then crashes. :) I've compiled my code with the -g option, and when I run valgrind with the following options valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes The following error message appears: ==6049== Warning: set address range perms: large range 112786496 (undefined) I've looked into this error message, and I understand that it is trying to tell me that I have allocated a very large block of memory. But I really would like to know the line number in my code, or even the function, where this is happening. Regretfully, this is all the information that valgrind is giving me. I can trace it by putting print messages in my code, but I'm not even sure if the valgrind message appears sequentially. Does anyone have any suggestions? Thank you as always, Susan _________________________________________________________________ Hotmail: Trusted email with powerful SPAM protection. http://clk.atdmt.com/GBL/go/177141665/direct/01/ |
|
From: Brian M. <br...@zw...> - 2009-10-10 19:22:31
|
2009/10/10 Susan Margulies <baj...@ho...>: > Hello, everyone! I am certain that I have a memory leak somewhere in my > code, because it eats all of the memory on my machine and then crashes. :) > I've compiled my code with the -g option, and when I run valgrind with the > following options > > valgrind --tool=memcheck --leak-check=yes --show-reachable=yes > --num-callers=20 --track-fds=yes > > The following error message appears: > > ==6049== Warning: set address range perms: large range 112786496 (undefined) > > I've looked into this error message, and I understand that it is trying to > tell me that I have allocated a very large block of memory. But I really > would like to know the line number in my code, or even the function, where > this is happening. Regretfully, this is all the information that valgrind is > giving me. I can trace it by putting print messages in my code, but I'm not > even sure if the valgrind message appears sequentially. > > Does anyone have any suggestions? Maybe its happening too deep into some library not compiled -g. you could try --db-attach=yes --db-command=gdb > > Thank you as always, > Susan > > ________________________________ > Hotmail: Trusted email with powerful SPAM protection. Sign up now. > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference > _______________________________________________ > Valgrind-users mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-users > > -- Brian Modra Land line: +27 23 5411 462 Mobile: +27 79 69 77 082 5 Jan Louw Str, Prince Albert, 6930 Postal: P.O. Box 2, Prince Albert 6930 South Africa http://www.zwartberg.com/ |
|
From: John R. <jr...@bi...> - 2009-10-10 19:53:05
|
> ==6049== Warning: set address range perms: large range 112786496 (undefined)
What version are you running (valgrind --version)? The current version is 3.5.0,
and at least since version 3.4.1 valgrind prints the actual address interval,
which often helps:
----- memcheck/mc_main.c; set_address_range_perms()
VG_(message)(Vg_UserMsg, "Warning: set address range perms: "
"large range [0x%lx, 0x%lx) (%s)\n",
-----
You can run valgrind under gdb by following the directions in README_DEVELOPERS
of the source code. For info on the full repository, see
http://www.valgrind.org/downloads/repository.html
I also found a copy of the individual file on the web at:
http://cs.swan.ac.uk/~csoliver/ok-sat-library/internet_html/doc/doc/Valgrind/3.4.1/html/dist.readme-developers.html
Plant a breakpoint on that message in set_address_range_perms(). When it
triggers, then print a stack trace of the user application via
(gdb) p vgPlain_get_and_pp_StackTrace(vgPlain_get_running_tid(), 10)
--
|
|
From: Julian S. <js...@ac...> - 2009-10-11 08:42:40
|
On Saturday 10 October 2009, John Reiser wrote:
> ----- memcheck/mc_main.c; set_address_range_perms()
> VG_(message)(Vg_UserMsg, "Warning: set address range perms: "
> "large range [0x%lx, 0x%lx) (%s)\n",
> Plant a breakpoint on that message in set_address_range_perms(). When it
> triggers, then print a stack trace of the user application via
> (gdb) p vgPlain_get_and_pp_StackTrace(vgPlain_get_running_tid(), 10)
A simpler version of this, that doesn't involve GDB is: after
VG_(message)(Vg_UserMsg, "Warning: set address range perms: "
"large range [0x%lx, 0x%lx) (%s)\n",
a, a + lenT, s);
(in mc_main.c) add
VG_(get_and_pp_StackTrace)( VG_(get_running_tid)(), 10 )
rebuild and rerun. 10 is the number of frames to show.
A generally better suggestion for space profiling ("who eat
all the memory?" kind of questions) is to use the Massif tool.
See http://www.valgrind.org/docs/manual/ms-manual.html
J
|