Thanks all for your answer.
In loaded embedded system the time at with code hit do_user_fault()
and core_dump_wait() is bit
high, I check on my system it took 2.7 sec. so it is very much
possible that core dump is not correct.
It contain global value updated.
So is it possible at time of send_signal() we can stop modification of
faulty thread memory ?
On Tue, Nov 1, 2011 at 8:53 PM, Oleg Nesterov <email@example.com> wrote:
> On 11/01, trisha yad wrote:
>> Dear all,
>> I am running a multithreaded application. So consider a global
>> variable x which is used by a, b and c thread.
>> In thread 'a' do abnormal operation(invalid memory access) and kernel
>> send signal kill to it. In the mean time Thread 'b' and Thread 'c'
>> got schedule and update
>> the variable x. when I got the core file, variable x got updated, and
>> I am not getting actual value that is present at time of crash of
>> thread a.
>> But In core file I got updated value of x. I want In core file exact
>> the same memory status as it at time of abnormal operation(invalid
>> memory access)
> Yes, this is possible.
>> Is there any solution for such problem. ?
>> I want in core dump the same status of memory as at time of abnormal
>> operation(invalid memory access).
> I don't think we can "fix" this.
> We can probably change complete_signal() to notify other threads
> "immediately", but this is not simple and obviously can not close
> the window completely.
> Whatever we do, we can't "stop" other threads at the time when
> thread 'a' traps. All we can do is to try to shrink the window.