Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Aug 2014 15:50:55 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-ports-bugs@FreeBSD.org
Subject:   [Bug 192890] New: [MAINTAINER] devel/gdb thread support fix on i386 FreeBSD 9.x
Message-ID:  <bug-192890-13@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=192890

            Bug ID: 192890
           Summary: [MAINTAINER] devel/gdb thread support fix on i386
                    FreeBSD 9.x
           Product: Ports Tree
           Version: Latest
          Hardware: i386
                OS: Any
            Status: Needs Triage
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: freebsd-ports-bugs@FreeBSD.org
          Reporter: luca.pizzamiglio@gmail.com
 Attachment #146116 maintainer_approval+
             Flags:

Created attachment 146116
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=146116&action=edit
Patch to fix the problem

On FreeBSD 9.x i386 systems, debugging applications with threads causes a crash
of gdb.

Analysing the problem, I discovered a potential dangerous thread support
initialization, causing the crash on this specific configuration.
However it's conceptually wrong.

When the libthr is loaded by gdb, the thread support want to add FreeBSD
specific information to the current thread. Doing this, it cleans the thread
list and re-add the current thread with the updated information (actually, the
LWP id).
This operation call a free of the struct thread_info (clean/init the thread
list) and a malloc of the same struct (add the current thread).
The problem is that a pointer to the struct thread_info is stored in another
struct (about the execution context) and it's not updatable.

On FreeBSD 9.x i386 systems, the malloc return a new pointer; then the
execution context contains a broken pointer.
On all other platform, the malloc return the same pointer and the execution
context stays coherent.

This patch avoids to clean the thread list and to re-add the thread; it just
update thread information of the current thread.

Tested on FreeBSD 9.3 on i386 and amd64 and FreeBSD 10 on i386.

-- 
You are receiving this mail because:
You are the assignee for the bug.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-192890-13>