En/na Luca Olivetti ha escrit:
Since I still have the RPMs built under mandriva 2009.1, I replaced
everything with the old versions (gnustep-base included) and the stack
smashing is still there, so it's either another library causing it (it
happens in libc) or an underlying problem in sope/sogo.
Well, I really need some help here (not knowing much about objective c
and gdb).
I loaded the database with just one of the events causing the crash, I
attached the debugger to the running sogo and I can inspect the full
backtrace.
The problem appears to be here:
Program received signal SIGABRT, Aborted.
0xffffe430 in __kernel_vsyscall ()
(gdb) up
#1 0xb6ae4611 in raise (sig=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
Current language: auto; currently c
(gdb) up
#2 0xb6ae5f62 in abort () at abort.c:88
88 raise (SIGABRT);
(gdb) up
#3 0xb6b1f6ed in __libc_message (do_abort=2, fmt=0xb6be9f97 "*** %s
***: %s terminated\n")
at ../sysdeps/unix/sysv/linux/libc_fatal.c:170
170 abort ();
(gdb) up
#4 0xb6ba8a58 in __fortify_fail (msg=0xb6be9f7f "stack smashing
detected") at fortify_fail.c:32
32 __libc_message (2, "*** %s ***: %s terminated\n",
(gdb) up
#5 0xb6ba8a10 in __stack_chk_fail () at stack_chk_fail.c:29
29 __fortify_fail ("stack smashing detected");
(gdb) up
#6 0xb75898f4 in __stack_chk_fail_local () from /usr/lib/libNGCards.so.4.9
(gdb) up
#7 0xb757cfd0 in -[iCalMonthlyRecurrenceCalculator
recurrenceRangesWithinCalendarDateRange:] (self=0xa2bdcf0, _cmd=0xb759f9f0,
_r=0xa5c6c20) at iCalMonthlyRecurrenceCalculator.m:433
433 }
Current language: auto; currently objective-c
(gdb)
Not very helpful (to me) since line 433 is the closing bracket of the
method, so let's see with what parameters it was called:
(gdb) up
#8 0xb75850e8 in -[iCalYearlyRecurrenceCalculator
recurrenceRangesWithinCalendarDateRange:] (self=0xa5abd58, _cmd=0xb759d080,
_r=0xa66c798) at iCalYearlyRecurrenceCalculator.m:190
190 rangesInMonth = [monthlyCalc
recurrenceRangesWithinCalendarDateRange: rangeForMonth];
(gdb) info locals
rangeForMonth = (class NGCalendarDateRange *) 0xa5c6c20
rangesInMonth = (class NSArray *) 0xb6fedff4
k = -1224728480
test = 9
year = 2010
ranges = (class NSMutableArray *) 0xa2bd730
byMonth = (class NSArray *) 0xa2f0308
firStart = (class NSCalendarDate *) 0xa5ac040
lastDate = (class NSCalendarDate *) 0xa5abd58
rStart = (class NSCalendarDate *) 0xa5c6be0
rEnd = (class NSCalendarDate *) 0xa5c6c00
until = (class NSCalendarDate *) 0xa5abd58
referenceDate = (class NSCalendarDate *) 0xa5c6b80
monthlyCalc = (class iCalMonthlyRecurrenceCalculator *) 0xa2bdcf0
j = 0
yearIdxInRange = 0
numberOfYearsInRange = 1
count = 0
interval = 1
monthDiff = 0
diff = 9
repeatCount = 0
currentMonth = 9
(gdb) p *rangeForMonth
$1 = {{isa = 0xb719fb20}, startDate = 0xa5c6be0, endDate = 0xa5c6c00}
(gdb) p *rangeForMonth.startDate
$2 = {{{isa = 0xb70050c0}}, _seconds_since_ref = 304984800,
_calendar_format = 0xb7004b80, _time_zone = 0x8cfb2e8}
(gdb) p *rangeForMonth.endDate
$3 = {{{isa = 0xb70050c0}}, _seconds_since_ref = 307576800,
_calendar_format = 0xb7004b80, _time_zone = 0x8cfb2e8}
(gdb)
This is the event I used (but any event with a BYMONTH clause will
trigger it):
BEGIN:VCALENDAR
VERSION:1.0
TZ:+0100
DAYLIGHT:TRUE;+0200;20010325T020000;20011028T030000;;
DAYLIGHT:TRUE;+0200;20020331T020000;20021027T030000;;
DAYLIGHT:TRUE;+0200;20030330T020000;20031026T030000;;
DAYLIGHT:TRUE;+0200;20040328T020000;20041031T030000;;
DAYLIGHT:TRUE;+0200;20050327T020000;20051030T030000;;
DAYLIGHT:TRUE;+0200;20060326T020000;20061029T030000;;
DAYLIGHT:TRUE;+0200;20070325T020000;20071028T030000;;
BEGIN:VEVENT
UID:1073742909
X-FUNAMBOL-ALLDAY:1
DTSTART:20010904
DTEND:20010905
X-MICROSOFT-CDO-BUSYSTATUS:0
CATEGORIES:
DESCRIPTION:
LOCATION:
STATUS:0
SUMMARY:MariJ
CLASS:PUBLIC
RRULE:FREQ=YEARLY;BYMONTH=9;COUNT=0
X-FUNAMBOL-AALARMOPTIONS:4
END:VEVENT
END:VCALENDAR
Bye
--
Luca Olivetti
Wetron Automatización S.A. http://www.wetron.es/
Tel. +34 93 5883004 (Ext.133) Fax +34 93 5883007
--
[email protected]
https://inverse.ca/sogo/lists