Wireshark-bugs: [Wireshark-bugs] [Bug 2453] segmentation fault with wslua script
Date: Wed, 23 Apr 2008 09:59:21 -0700 (PDT)
http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=2453


Márton Németh <nm127@xxxxxxxxxxx> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Attachment #1738|                            |review_for_checkin?
               Flag|                            |




--- Comment #13 from Márton Németh <nm127@xxxxxxxxxxx>  2008-04-23 09:59:21 GMT ---
Created an attachment (id=1738)
 --> (http://bugs.wireshark.org/bugzilla/attachment.cgi?id=1738)
remove write

It seems that there is some problem with the functions
clear_outstanding_tvbs(), clear_outstanding_trees() and
clear_outstanding_pinfos(). These functions looks like the same, they use the
g_ptr_array_remove_index_fast() function to remove a pointer from the pointer
array called "outstanding_stuff".

This pointer is added to the "outstanding_stuff" pointer array by the
g_ptr_array_add() function. The pointer itself is created by the
lua_newuserdata() function. The lua_newuserdata() function is called from the
macros PUSH_TVB, PUSH_TVBRANGE, PUSH_TREEITEM, PUSH_COLUMN and PUSH_COLUMNS.

What is not clear for me is that why should we collect these pointers if Lua
will gc the userdata anyway?

Documentation:
g_ptr_array_remove_index_fast():
http://library.gnome.org/devel/glib/stable/glib-Pointer-Arrays.html#g-ptr-array-remove-index-fast

g_ptr_array_add():
http://library.gnome.org/devel/glib/stable/glib-Pointer-Arrays.html#g-ptr-array-add

lua_newuserdata(): http://www.lua.org/manual/5.1/manual.html#lua_newuserdata

---
After applying this patch the crash is not there anymore.


-- 
Configure bugmail: http://bugs.wireshark.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.