[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ICU / NSDateFormatter crash
From: |
Riccardo Mottola |
Subject: |
Re: ICU / NSDateFormatter crash |
Date: |
Fri, 28 Jul 2017 02:18:21 +0200 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0 SeaMonkey/2.46 |
Hi,
David Chisnall wrote:
This is quite surprising. On FreeBSD, this function should be provided by
libcxxrt, not libsupc++. Please file a bug report with the FreeBSD gcc
maintainer - it looks as if you’ve somehow ended up with a program linking both
libc++ from base and libstdc++ from ports, and the libstdc++ from ports is
incorrectly using its own internal libsupc++ instead of the system-provided
libcxxrt (which I wrote, so can help debugging a bit better).
That said, this function should not crash. It should only do so if the object
that is being passed to it is invalid. Is 0x2e904a80 a valid address of an
icu::UObject?
how can I know?
The crash calling a null function pointer looks a bit suspicious, because the
only function pointers invoked by this function should be from the typeinfo
object’s vtable, and should never be null. There was an ABI break for the
layout of typeinfo vtables from gcc a while ago and I don’t remember which one
FreeBSD ended up with, but if you’re linking both libcxxrt and libsupc++ then
you may end up with this.
that's unfortunate. It took me a while to respond, because I notived a
minor update in the GCC 5 package and updated to it (I do through
compilation on my own using portupgrade). I also updated other things.
#0 0x00000000 in ?? ()
#1 0x29c0ad42 in __cxxabiv1::__dynamic_cast (src_ptr=0x2e904a80,
src_type=0x2973c618 <typeinfo for icu::UObject>,
dst_type=0x2973d8b8 <typeinfo for icu::UnicodeString>, src2dst=0)
at
/usr/ports/lang/gcc5/work/gcc-5.4.0/libstdc++-v3/libsupc++/dyncast.cc:72
#2 0x2942d51d in icu::Calendar::makeInstance(icu::Locale const&,
UErrorCode&)
() from /usr/local/lib/libicui18n.so.58
#3 0x2942d3ba in
icu::LocaleCacheKey<icu::SharedCalendar>::createObject(void const*,
UErrorCode&) const () from /usr/local/lib/libicui18n.so.58
#4 0x296d190f in icu::UnifiedCache::_get(icu::CacheKeyBase const&,
icu::SharedObject const*&, void const*, UErrorCode&) const ()
from /usr/local/lib/libicuuc.so.58
#5 0x29438906 in void
icu::UnifiedCache::get<icu::SharedCalendar>(icu::CacheKey<icu::SharedCalendar>
const&, void const*, icu::SharedCalendar const*&, UErrorCode&) const ()
from /usr/local/lib/libicui18n.so.58
#6 0x29437d78 in void
icu::UnifiedCache::getByLocale<icu::SharedCalendar>(icu::Locale const&,
icu::SharedCalendar const*&, UErrorCode&) ()
from /usr/local/lib/libicui18n.so.58
#7 0x2942e90d in icu::Calendar::createInstance(icu::TimeZone*,
icu::Locale const&, UErrorCode&) () from /usr/local/lib/libicui18n.so.58
#8 0x293ec0f1 in
icu::SimpleDateFormat::construct(icu::DateFormat::EStyle,
icu::DateFormat::EStyle, icu::Locale const&, UErrorCode&) ()
from /usr/local/lib/libicui18n.so.58
Thre crash is still in place and it is still using libsupc++
Do you want more information of the stacktrace or should I just file a
bug right away?
This is a box running 10.3 and gcc5 is still "standard gcc from ports"
as far as I know. I did try gcc6 a couple of months ago but it was non
functional to compile gnustep... it was a mess, while gcc5 just worked
fine (.except this issue, which I did not have a couple of months ago,
but I don't know exactly what broke it)
It could be April 1 commit by gerald :)
Riccardo