|
From: Alexei S. <ale...@gm...> - 2012-08-09 04:20:00
|
On Thu, Aug 9, 2012 at 12:15 AM, Alexei Svitkine
<ale...@gm...> wrote:
> I am not convinced that the revision in question is the cause of the
> issue you're seeing.
>
> I've read over that change and it seems correct to me. Perhaps
> something else is going wrong that is corrupting the internal state of
> those linked lists and that change merely exposes the issue?
>
> Could you actually debug this and verify that the two paths in that
> function end up invalidating different nodes?
>
> One way to do it would be with something like (mailer-code - may need tweaking):
>
> std::vector<entry*> entries;
> entry *p, *q;
> if (cacheline(start) < cacheline(end - 1)) {
> // Optimize for short ranges flush
> const int end_cl = cacheline(end - 1);
> for (int cl = cacheline(start); cl <= end_cl; cl++) {
> p = cache_tags[cl];
> while (p) {
> q = p;
> p = p->next_same_cl;
> if (q->intersect(start, end)) {
> entries.push_back(q);
> }
> }
> }
> }
>
> int index = 0;
> p = active;
> while (p) {
> q = p;
> p = p->next;
> if (q->intersect(start, end)) {
> if (entries[index++] != q)
> abort();
> q->invalidate();
> remove_from_cl_list(q);
> remove_from_list(q);
> delete_blockinfo(q);
> }
> }
Sorry, I think the code I suggested may not be quite right to check this as it
assumes the order of the nodes found is the same between the two
paths. It probably isn't - so you may need to save the results of the
two paths into separate vectors and sort them before comparing. But
you get the idea. (I hope...)
-Alexei
>
> If it does indeed hit the abort() code, maybe you can dump the state
> of the linked lists and narrow down where the state gets corrupted?
>
> -Alexei
>
>
> On Wed, Aug 8, 2012 at 9:50 PM, Josh Juran <jj...@gm...> wrote:
>>
>> Hi,
>>
>> I've bisected a crash in one of my programs running in SheepShaver to
>> this commit:
>>
>> commit efa32be9ec44956c77e5001e31bebce151cb2ad6
>> Author: gbeauche <>
>> Date: Sat Jul 21 10:25:51 2007 +0000
>>
>> Optimize invalidate_cache_range() for short ranges.
>>
>> I applied 7bb230ab "apparently this makes newest SDL happy" to each
>> checkout I tested to get SheepShaver to run at all. This is in Mac
>> OS X 10.4 "Tiger" for Intel.
>>
>> The issue occurs only rarely, with regard to what triggers it, but
>> it's 100% reproducible. To reproduce:
>>
>> * Launch MacRelix
>> * Run `git --version`
>> * cd into a Git repo (I only tried my metamage repo)
>> * Run `time git status` with git v1.7.6
>>
>> One of three failure modes occurs:
>>
>> * SheepShaver exits immediately
>> * The guest OS hangs and SheepShaver consumes maximum CPU
>> * The command completes with garbled output, having failed to
>> recognize its input
>>
>> $ time /git status
>> 10-102.964309e-3152200othing added.
>> 0x1.0002400000000p-1023ybe you wanted to say 'git add .'?
>>
>> real 0.07
>> user 0.00
>> sys 0.07
>>
>> No failure occurs with any of the following:
>>
>> * Don't run `git --version` first
>> * Run `git status` without `time`
>> * Use git v1.7.5 instead of v1.7.6
>> * Use a git binary built with symbolics (i.e. enabled to run in the
>> Metrowerks debugger)
>> * Run in Classic instead of SheepShaver
>> * Use a SheepShaver built with the optimization reverted
>>
>> If I cd before running `git --version`, the error message is
>> displayed ungarbled (which is still wrong, since the repo isn't empty).
>>
>> If I use an optimized build instead, I get a different error:
>>
>> fatal: bad config value for 'core.repositoryformatversion' in .git/
>> config
>>
>> Since efa32be9e is at best an optimization and demonstrably causes
>> problems, I suggest it be reverted immediately.
>>
>> Josh
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Live Security Virtual Conference
>> Exclusive live event will cover all the ways today's security and
>> threat landscape has changed and how IT managers can respond. Discussions
>> will include endpoint security, mobile security and the latest in malware
>> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
>> _______________________________________________
>> basilisk-devel mailing list
>> bas...@li...
>> https://lists.sourceforge.net/lists/listinfo/basilisk-devel
|