Date: Sun, 18 Dec 2016 16:53:42 -0800 From: Mark Johnston <markj@FreeBSD.org> To: Robert Mustacchi <rm@joyent.com> Cc: freebsd-dtrace@freebsd.org, hrs@FreeBSD.org, swills@FreeBSD.org Subject: Re: malformed symbol Message-ID: <20161219005342.GA57753@wkstn-mjohnston.west.isilon.com> In-Reply-To: <6b0842f5-46e8-e90e-0cc6-ec0cbe74669a@joyent.com> References: <20161215.075124.1459885758696268380.hrs@allbsd.org> <6b0842f5-46e8-e90e-0cc6-ec0cbe74669a@joyent.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Dec 14, 2016 at 02:56:12PM -0800, Robert Mustacchi wrote: > On 12/14/16 14:51 , Hiroki Sato wrote: > > This was reproducible on 11.x and 12.x, not on 10.x. Could anyone > > try this and let me know if this is reproducible on your 11.x or 12.x > > box? I guess this is a regression of symbol rewrite routine such as > > s/__/-/ in the dtrace utility while I have not investigated the > > details yet. Or am I missing something here? > > We've seen something similar on illumos that corresponds with newer > binutils versions (2.26). See https://www.illumos.org/issues/6653. I wrote a hacky patch[1] which modifies libdtrace such that it appends the modified symbol name to the strtab instead of modifying the original name, and updates the symbol to point to the new entry. It seems to address the issue. I then wondered why we update the strtab in the first place. The code uses the modified string to look up the probe corresponding to the relocation that designates the probe site. Why can't we copy the symbol name to a buffer, call strhyphenate() on that, and use it for the lookup instead? Once the probe sites are recorded in the DOF, we shouldn't care about the symbol name. I implemented this too[2] and haven't hit any problems with some quick testing. [1] https://people.freebsd.org/~markj/patches/libdtrace_symname_swizzle.diff [2] https://people.freebsd.org/~markj/patches/libdtrace_symname_swizzle2.diff
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20161219005342.GA57753>