Thanks Corinna I appreciate the response.

Question 2: IS THE CODE MODIFICATION AN ACCEPTABLE SOLUTION TO THE PROBLEM?

 > Maybe, but first it would be helpful if somebody could explain why
 > sections should be able to overlap at all. That's puzzling me.
 >
 > As for patches, did you seehttp://cygwin.com/contrib.html
 > For small, obvious patches, we don't need the copyright assignment.
 > Rule of thumb is < 10 lines.


I'm happy to submit minor patches on both points covered in the original post. However as you noted I'll wait for someone to first explain if/why sections overlap.

Thanks,
Sam


On 11/03/14 22:02, Corinna Vinschen wrote:
Hi Sam,

On Mar 11 10:35, Sam Liapis wrote:
>As a disclaimer I'm new to Cygwin and memory mapping that's alluded  to in 
this post.
>
>My brief was to investigate and resolve an issue with dumper not  producing a 
core.
>
>With that I'll proceed with outlining the journey including my  findings so 
far.
>
>I'll begin with the error message given by dumper when run in verbose mode:
>(Note: I modified debug output to provide base address of excluded memory)
>[,..]
>Code analysis reveals a few shortcomings leading up to this failure.  Firstly 
the process of
>identifying sections to exclude, includes sorting and checking that  regions 
do not overlap.
>Upon closer inspection the function in question at  
...winsup/utils/parse_pe.cc appears to
>have a couple of problems.
>
>     a) "if (q == p + 1)" at line 60 always resolves true bypassing  
subsequent loop code.
>
>     b) The 'size' parameter at line 63 is a global instead of  p->size. The 
test expression
>        should be if (p->base + p->size > q->base) in order to test  for 
overlapping regions.
This looks very wrong indeed.

>[...]
>Even if sort_and_check () worked correctly it wouldn't prevent  dumper failure 
it just raises an alert.
>
>Secondly when dumper builds a list of memory regions to dump into a  core file 
it has no logic to cater
>for overlapping sections to exclude. Here in lies my first question  regarding 
this issue:
>
>
>Question 1: SHOULD MEMORY REGIONS IDENTIFIED FOR EXCLUSION EVER OVERLAP?
I can't really answer this question safely, but AFAIK, the answer is
no.  The sections and memory layout in a pe/coff file are so that the
sections have unique VMAs, including debug sections.  An overlap of
sections should never occur, otherwise the Windows loader would have
refused to load the executable into memory anyway.  Unless I'm missing
something...

>Question 2: IS THE CODE MODIFICATION AN ACCEPTABLE SOLUTION TO THE PROBLEM?
Maybe, but first it would be helpful if somebody could explain why
sections should be able to overlap at all.  That's puzzeling me.

As for patches, did you seehttp://cygwin.com/contrib.html
For small, obvious patches, we don't need the copyright assignment.
Rule of thumb is < 10 lines.


Thanks,
Corinna

-- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply via email to