diff --git a/ChangeLog b/ChangeLog index 9a3b320a18..66ab013eb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2005-10-07 Edward Hervey + + * gst/pygstminiobject.c: (pygstminiobject_register_wrapper), + (pygstminiobject_new), (pygstminiobject_dealloc): + Comments to better track the creation/destruction of PyGstMiniObject + Fixed naming (gst.GstMiniObject => gst.MiniObject) + * testsuite/python.supp: + Updated python specific valgrind suppressions to latest version and + added x86_64 cases + * testsuite/gstpython.supp: + Series of suppressions for errors/leaks not solvable within gst-python + * testsuite/Makefile.am: + Added gstpython.supp + 2005-10-07 Thomas Vander Stichele * configure.ac: diff --git a/common b/common index fb4bd52a0a..eb0dd118a0 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit fb4bd52a0a6e882bd8eb0ca836edd94d3fcaea42 +Subproject commit eb0dd118a086dd4aa405d3871131839d81306245 diff --git a/gst/pygstminiobject.c b/gst/pygstminiobject.c index 0cf69f0625..d7859955ee 100644 --- a/gst/pygstminiobject.c +++ b/gst/pygstminiobject.c @@ -145,6 +145,8 @@ pygstminiobject_register_wrapper (PyObject *self) GST_DEBUG ("inserting self %p in the table for object %p", self, obj); state = pyg_gil_state_ensure (); g_hash_table_insert (_miniobjs, (gpointer) obj, (gpointer) self); + GST_DEBUG ("There are now %d elements in the hash table", + g_hash_table_size (_miniobjs)); pyg_gil_state_release (state); } @@ -205,6 +207,8 @@ pygstminiobject_new (GstMiniObject *obj) GST_DEBUG ("inserting self %p in the table for object %p", self, obj); state = pyg_gil_state_ensure (); g_hash_table_insert (_miniobjs, (gpointer) obj, (gpointer) self); + GST_DEBUG ("There are now %d elements in the hash table", + g_hash_table_size (_miniobjs)); pyg_gil_state_release (state); } @@ -225,6 +229,8 @@ pygstminiobject_dealloc(PyGstMiniObject *self) GST_DEBUG ("removing self %p from the table for object %p", self, self->obj); g_assert (g_hash_table_remove (_miniobjs, (gpointer) self->obj)); + GST_DEBUG ("There are now %d elements in the hash table", + g_hash_table_size (_miniobjs)); gst_mini_object_unref(self->obj); } GST_DEBUG ("setting self %p -> obj to NULL", self); @@ -367,7 +373,7 @@ static PyGetSetDef pygstminiobject_getsets[] = { PyTypeObject PyGstMiniObject_Type = { PyObject_HEAD_INIT(NULL) 0, /* ob_size */ - "gst.GstMiniObject", /* tp_name */ + "gst.MiniObject", /* tp_name */ sizeof(PyGstMiniObject), /* tp_basicsize */ 0, /* tp_itemsize */ /* methods */ diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am index 4fdc70dddd..d3a6dcbc69 100644 --- a/testsuite/Makefile.am +++ b/testsuite/Makefile.am @@ -40,7 +40,7 @@ check-verbose: testhelper.la @VERBOSE=yes PYTHONPATH=$(top_builddir):$(top_builddir)/gst/.libs:`pwd`:$(top_srcdir):$(PYTHONPATH) $(PYTHON) $(srcdir)/runtests.py @rm -fr *.pyc -EXTRA_DIST = $(TESTS) common.py runtests.py test-object.h python.supp +EXTRA_DIST = $(TESTS) common.py runtests.py test-object.h python.supp gstpython.supp if HAVE_VALGRIND check-valgrind: @@ -52,6 +52,7 @@ endif GSTSUPP = $(top_srcdir)/common/gst.supp PYTHONSUPP = $(top_srcdir)/testsuite/python.supp +GSTPYTHONSUPP = $(top_srcdir)/testsuite/gstpython.supp # valgrind any given test_x.py by running make test_x.valgrind %.valgrind: % @@ -59,6 +60,7 @@ PYTHONSUPP = $(top_srcdir)/testsuite/python.supp $(VALGRIND_PATH) -q \ --suppressions=$(GSTSUPP) \ --suppressions=$(PYTHONSUPP) \ + --suppressions=$(GSTPYTHONSUPP) \ --tool=memcheck --leak-check=yes --trace-children=yes \ $(PYTHON) \ $* 2>&1 | tee valgrind.log diff --git a/testsuite/gstpython.supp b/testsuite/gstpython.supp new file mode 100644 index 0000000000..2f4641b153 --- /dev/null +++ b/testsuite/gstpython.supp @@ -0,0 +1,80 @@ +{ + pthread leak + Memcheck:Leak + fun:calloc + fun:allocate_dtv + fun:_dl_allocate_tls* +} + +{ + pthread leak 2 + Memcheck:Leak + fun:memalign + fun:_dl_allocate_tls* +} + +{ + popt leak + Memcheck:Leak + fun:malloc + fun:nss_parse_service_list + fun:__nss_database_lookup + obj:* + obj:* + fun:getpwuid_r@@GLIBC_2.2.5 + fun:g_get_any_init_do + fun:g_get_home_dir + fun:init_post + fun:init_popt_callback +} + +{ + pygobject init leak + Memcheck:Leak + fun:calloc + fun:g_malloc0 + fun:type_node_* + fun:type_node_* + fun:* + fun:* + fun:g_type_init* + fun:initgobject +} + +{ + borked pthread creation + Memcheck:Param + write(buf) + fun:__pthread_initialize_manager + fun:pthread_create@@GLIBC_2.2.5 + fun:* + fun:* + fun:* + fun:* + fun:gst_task_start +} + +{ + borked pthread creation 2 + Memcheck:Param + write(buf) + fun:pthread_create@@GLIBC_2.2.5 + fun:* + fun:* + fun:* + fun:* + fun:gst_task_start +} + +{ + memory loss when creating thread from gst_task_start + Memcheck:Leak + fun:malloc + fun:__pthread_initialize_manager + fun:* + fun:* + fun:* + fun:* + fun:* + fun:gst_task_start +} diff --git a/testsuite/python.supp b/testsuite/python.supp index f8e5caacfd..642667437a 100644 --- a/testsuite/python.supp +++ b/testsuite/python.supp @@ -28,6 +28,12 @@ fun:Py_ADDRESS_IN_RANGE } +{ + ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64) + Memcheck:Value8 + fun:Py_ADDRESS_IN_RANGE +} + { ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value Memcheck:Cond @@ -40,12 +46,24 @@ fun:PyObject_Free } +{ + ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64) + Memcheck:Addr8 + fun:PyObject_Free +} + { ADDRESS_IN_RANGE/Invalid read of size 4 Memcheck:Value4 fun:PyObject_Free } +{ + ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64) + Memcheck:Value8 + fun:PyObject_Free +} + { ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value Memcheck:Cond @@ -58,6 +76,12 @@ fun:PyObject_Realloc } +{ + ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64) + Memcheck:Addr8 + fun:PyObject_Realloc +} + { ADDRESS_IN_RANGE/Invalid read of size 4 Memcheck:Value4 @@ -65,9 +89,15 @@ } { - ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value - Memcheck:Cond - fun:PyObject_Realloc + ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64) + Memcheck:Value8 + fun:PyObject_Realloc +} + +{ + ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value + Memcheck:Cond + fun:PyObject_Realloc } ### @@ -84,6 +114,118 @@ } +{ + Avoid problem in libc on gentoo + Memcheck:Cond + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so +} + +{ + Avoid problem in glibc on gentoo + Memcheck:Addr8 + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/libc-2.3.4.so + obj:/lib/ld-2.3.4.so + fun:_dl_open + obj:/lib/libdl-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/libdl-2.3.4.so + fun:dlopen +} + +{ + Avoid problem in glibc on gentoo + Memcheck:Addr8 + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/libc-2.3.4.so + obj:/lib/ld-2.3.4.so + fun:_dl_open + obj:/lib/libdl-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/libdl-2.3.4.so + fun:dlopen +} + +{ + Avoid problem in glibc on gentoo + Memcheck:Cond + obj:/lib/ld-2.3.4.so + obj:/lib/libc-2.3.4.so + obj:/lib/ld-2.3.4.so + fun:_dl_open + obj:/lib/libdl-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/libdl-2.3.4.so + fun:dlopen +} + +{ + Avoid problem in glibc on gentoo + Memcheck:Cond + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/libc-2.3.4.so + obj:/lib/ld-2.3.4.so + fun:_dl_open + obj:/lib/libdl-2.3.4.so + obj:/lib/ld-2.3.4.so + obj:/lib/libdl-2.3.4.so + fun:dlopen +} + +{ + Avoid problems w/readline doing a putenv and leaking on exit + Memcheck:Leak + fun:malloc + fun:xmalloc + fun:sh_set_lines_and_columns + fun:_rl_get_screen_size + fun:_rl_init_terminal_io + obj:/lib/libreadline.so.4.3 + fun:rl_initialize + fun:setup_readline + fun:initreadline + fun:_PyImport_LoadDynamicModule + fun:load_module + fun:import_submodule + fun:load_next + fun:import_module_ex + fun:PyImport_ImportModuleEx +} + +{ + Mysterious leak that seems to deal w/pthreads + Memcheck:Leak + fun:calloc + obj:/lib/ld-2.3.4.so + obj:/lib/ld-2.3.4.so + fun:_dl_allocate_tls + fun:__pthread_initialize_minimal +} + +{ + Mysterious leak that seems to deal w/pthreads + Memcheck:Leak + fun:memalign + obj:/lib/ld-2.3.4.so + fun:_dl_allocate_tls + fun:__pthread_initialize_minimal +} + ### ### These occur from somewhere within the SSL, when running ### test_socket_sll. They are too general to leave on by default. @@ -214,11 +356,3 @@ } -# some extra lxml specific (?) suppressions.. - -{ - Test - Memcheck:Param - sigaction(act) - fun:__libc_sigaction -}