public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* 16 byte pthread stack alignments
@ 2011-12-20 23:45 Brian Ford
  2011-12-21  9:42 ` Corinna Vinschen
  0 siblings, 1 reply; 22+ messages in thread
From: Brian Ford @ 2011-12-20 23:45 UTC (permalink / raw)
  To: cygwin

I'm just headed home from work right now, but I thought I would let you
know of a regression from 1.7.9.  It appears the effect of this patch:

http://www.cygwin.com/ml/cygwin-cvs/2004-q2/msg00124.html

is no longer working in the current snapshot.  I'll try to narrow it down
to which change caused the regression and send in an STC tomorrow.
Thanks.

-- 
Brian Ford
Staff Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-20 23:45 16 byte pthread stack alignments Brian Ford
@ 2011-12-21  9:42 ` Corinna Vinschen
  2011-12-21 10:46   ` Corinna Vinschen
                     ` (2 more replies)
  0 siblings, 3 replies; 22+ messages in thread
From: Corinna Vinschen @ 2011-12-21  9:42 UTC (permalink / raw)
  To: cygwin

On Dec 20 17:45, Brian Ford wrote:
> I'm just headed home from work right now, but I thought I would let you
> know of a regression from 1.7.9.  It appears the effect of this patch:
> 
> http://www.cygwin.com/ml/cygwin-cvs/2004-q2/msg00124.html
> 
> is no longer working in the current snapshot.  I'll try to narrow it down
> to which change caused the regression and send in an STC tomorrow.

Is that the first Cygwin process started from a 64 bit process on 64 bit
XP or 2003?  If so, see the new wow64_revert_to_original_stack function
in wow64.cc and the wow64 code in _dll_crt0.

I don't see how any other change could have this effect.  But I also
don't see how this could occur with the patch.  Basically, what happens
is this:

  newbase = some 64K aligned address on the stack
  _main_tls = newbase - CYGTLS_PADSIZE (== 12700)
  $ebp = $esp = _main_tls - 4

So, assuming newbase == 0x10000
    ==> _main_tls == 0xce64
    ==> $ebp/$esp == 0xce60, which is certainly a 16 byte aligned value.

But OTOH I have to admit that I don't see how this alignment business
worked at all.  Aligning the stack to 16 byte in mainCRTStartup doesn't
guarantee that the stack is still 16 byte aligned in main().  If that
worked so far, it seems like a miracle.  The call stack looks like this:

  mainCRTStartup
  -> cygwin_crt0
     -> _dll_crt0
        -> _main_tls->call
	   -> _main_tls->call2
	      -> dll_crt0_1
	         -> main

Every function on the stack changes the stack pointer.  How did that
work?  Coincidence?

And then again, isn't it gcc's job to make sure that the generated code
makes sure the stack is correctly aligned for certain opcodes?

What am I missing?


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-21  9:42 ` Corinna Vinschen
@ 2011-12-21 10:46   ` Corinna Vinschen
  2011-12-21 15:20   ` Dave Korn
  2011-12-21 16:13   ` Brian Ford
  2 siblings, 0 replies; 22+ messages in thread
From: Corinna Vinschen @ 2011-12-21 10:46 UTC (permalink / raw)
  To: cygwin

On Dec 21 10:42, Corinna Vinschen wrote:
> On Dec 20 17:45, Brian Ford wrote:
> > I'm just headed home from work right now, but I thought I would let you
> > know of a regression from 1.7.9.  It appears the effect of this patch:
> > 
> > http://www.cygwin.com/ml/cygwin-cvs/2004-q2/msg00124.html
> > 
> > is no longer working in the current snapshot.  I'll try to narrow it down
> > to which change caused the regression and send in an STC tomorrow.
> 
> Is that the first Cygwin process started from a 64 bit process on 64 bit
> XP or 2003?  If so, see the new wow64_revert_to_original_stack function
> in wow64.cc and the wow64 code in _dll_crt0.
> 
> I don't see how any other change could have this effect.  But I also
> don't see how this could occur with the patch.  Basically, what happens
> is this:
> 
>   newbase = some 64K aligned address on the stack
>   _main_tls = newbase - CYGTLS_PADSIZE (== 12700)
>   $ebp = $esp = _main_tls - 4
> 
> So, assuming newbase == 0x10000
>     ==> _main_tls == 0xce64
>     ==> $ebp/$esp == 0xce60, which is certainly a 16 byte aligned value.
> 
> But OTOH I have to admit that I don't see how this alignment business
> worked at all.  Aligning the stack to 16 byte in mainCRTStartup doesn't
> guarantee that the stack is still 16 byte aligned in main().  If that
> worked so far, it seems like a miracle.  The call stack looks like this:
> 
>   mainCRTStartup
>   -> cygwin_crt0
>      -> _dll_crt0
>         -> _main_tls->call
> 	   -> _main_tls->call2
> 	      -> dll_crt0_1
> 	         -> main
> 
> Every function on the stack changes the stack pointer.  How did that
> work?  Coincidence?
> 
> And then again, isn't it gcc's job to make sure that the generated code
> makes sure the stack is correctly aligned for certain opcodes?
> 
> What am I missing?

On second thought I'm a bit puzzled that you refer to the patch which
tries to align the patch of the main thread while your subject talks
about pthreads.

If you mean the stack alignment of subsequently started pthreads, then
the culprit might be the changes I made to allow application-provided
stacks.  See the CygwinCreateThread and thread_wrapper functions in
miscfuncs.cc.  Does something like the below work for you?  Even though
I don't see how this is supposed to work if an arg and the return
address, 8 bytes, are pushed onto the stack afterwards.  In theory
the wrapper would have to subtract another 8 bytes after the alignment.
I still think gcc has to care for this alignment in the first place.

Index: miscfuncs.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/miscfuncs.cc,v
retrieving revision 1.75
diff -u -p -r1.75 miscfuncs.cc
--- miscfuncs.cc	17 Dec 2011 23:39:46 -0000	1.75
+++ miscfuncs.cc	21 Dec 2011 10:41:19 -0000
@@ -524,6 +524,7 @@ thread_wrapper (VOID *arg)
 	   subl  %[CYGTLS], %%ebx      # Subtract CYGTLS_PADSIZE     \n\
 	   subl  $4, %%ebx             # Subtract another 4 bytes    \n\
 	   movl  %%ebx, %%esp          # Set esp                     \n\
+	   andl  $-16, %%esp           # 16 bit align stack          \n\
 	   xorl  %%ebp, %%ebp          # Set ebp to 0                \n\
 	   # Now we moved to the new stack.  Save thread func address\n\
 	   # and thread arg on new stack                             \n\


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-21  9:42 ` Corinna Vinschen
  2011-12-21 10:46   ` Corinna Vinschen
@ 2011-12-21 15:20   ` Dave Korn
  2011-12-21 15:41     ` Corinna Vinschen
  2011-12-21 16:13   ` Brian Ford
  2 siblings, 1 reply; 22+ messages in thread
From: Dave Korn @ 2011-12-21 15:20 UTC (permalink / raw)
  To: cygwin

On 21/12/2011 09:42, Corinna Vinschen wrote:

> But OTOH I have to admit that I don't see how this alignment business
> worked at all.  Aligning the stack to 16 byte in mainCRTStartup doesn't
> guarantee that the stack is still 16 byte aligned in main().  If that
> worked so far, it seems like a miracle.  The call stack looks like this:
> 
>   mainCRTStartup
>   -> cygwin_crt0
>      -> _dll_crt0
>         -> _main_tls->call
> 	   -> _main_tls->call2
> 	      -> dll_crt0_1
> 	         -> main
> 
> Every function on the stack changes the stack pointer.  How did that
> work?  Coincidence?
> 
> And then again, isn't it gcc's job to make sure that the generated code
> makes sure the stack is correctly aligned for certain opcodes?
> 
> What am I missing?

  GCC assumes that the stack starts off 16-aligned when the OS hands over to
the exe's entrypoint, and then makes sure it stays that way by always rounding
stack frame sizes up to the nearest multiple of 16.  Or at any rate that's how
it's supposed to work.

    cheers,
      DaveK


--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-21 15:20   ` Dave Korn
@ 2011-12-21 15:41     ` Corinna Vinschen
  2011-12-21 16:22       ` Brian Ford
  0 siblings, 1 reply; 22+ messages in thread
From: Corinna Vinschen @ 2011-12-21 15:41 UTC (permalink / raw)
  To: cygwin

On Dec 21 15:20, Dave Korn wrote:
> On 21/12/2011 09:42, Corinna Vinschen wrote:
> 
> > But OTOH I have to admit that I don't see how this alignment business
> > worked at all.  Aligning the stack to 16 byte in mainCRTStartup doesn't
> > guarantee that the stack is still 16 byte aligned in main().  If that
> > worked so far, it seems like a miracle.  The call stack looks like this:
> > 
> >   mainCRTStartup
> >   -> cygwin_crt0
> >      -> _dll_crt0
> >         -> _main_tls->call
> > 	   -> _main_tls->call2
> > 	      -> dll_crt0_1
> > 	         -> main
> > 
> > Every function on the stack changes the stack pointer.  How did that
> > work?  Coincidence?
> > 
> > And then again, isn't it gcc's job to make sure that the generated code
> > makes sure the stack is correctly aligned for certain opcodes?
> > 
> > What am I missing?
> 
>   GCC assumes that the stack starts off 16-aligned when the OS hands over to
> the exe's entrypoint, and then makes sure it stays that way by always rounding
> stack frame sizes up to the nearest multiple of 16.  Or at any rate that's how
> it's supposed to work.

Ok.  Does that mean my patch from
http://cygwin.com/ml/cygwin/2011-12/msg00435.html should be the right
thing to do for pthreads?  I guess I will have to do the same in
_dll_crt0 then...


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-21  9:42 ` Corinna Vinschen
  2011-12-21 10:46   ` Corinna Vinschen
  2011-12-21 15:20   ` Dave Korn
@ 2011-12-21 16:13   ` Brian Ford
  2 siblings, 0 replies; 22+ messages in thread
From: Brian Ford @ 2011-12-21 16:13 UTC (permalink / raw)
  To: cygwin

I'm sorry.  I should have learned by now not to post at the last minute
before leaving for the day.  I always make mistakes and leave out
important information.  Thanks for considering my problem in spite of
these oversights.  More below...

On Wed, 21 Dec 2011, Corinna Vinschen wrote:

> On Dec 20 17:45, Brian Ford wrote:
> > I'm just headed home from work right now, but I thought I would let you
> > know of a regression from 1.7.9.  It appears the effect of this patch:
> >
> > http://www.cygwin.com/ml/cygwin-cvs/2004-q2/msg00124.html

You were correct below that I cited the wrong patch.  I simply swiped the
wrong URL in a hurry; sorry.  This is the correct reference:

http://www.cygwin.com/ml/cygwin-cvs/2004-q2/msg00108.html

> > is no longer working in the current snapshot.  I'll try to narrow it down
> > to which change caused the regression and send in an STC tomorrow.
>
> Is that the first Cygwin process started from a 64 bit process on 64 bit
> XP or 2003?

No; this is 32 bit XP Pro SP3.

Most of the rest of this has been cleared up I think, so I'll save any
further responses to later messages in the thread.  Thanks again for your
help.

-- 
Brian Ford
Staff Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-21 15:41     ` Corinna Vinschen
@ 2011-12-21 16:22       ` Brian Ford
  2011-12-21 16:51         ` Corinna Vinschen
  2011-12-21 18:20         ` Brian Ford
  0 siblings, 2 replies; 22+ messages in thread
From: Brian Ford @ 2011-12-21 16:22 UTC (permalink / raw)
  To: cygwin

On Wed, 21 Dec 2011, Corinna Vinschen wrote:

> On Dec 21 15:20, Dave Korn wrote:
> >   GCC assumes that the stack starts off 16-aligned when the OS hands over to
> > the exe's entrypoint, and then makes sure it stays that way by always rounding
> > stack frame sizes up to the nearest multiple of 16.  Or at any rate that's how
> > it's supposed to work.
>
> Ok.  Does that mean my patch from
> http://cygwin.com/ml/cygwin/2011-12/msg00435.html should be the right
> thing to do for pthreads?  I guess I will have to do the same in
> _dll_crt0 then...

Probably.  I'm trying to test now, but I haven't built cygwin in years now
so I'm still working to get things set up.  I've also lost track of Cygwin
internals.  Does it make sense to you that those two patches from 2004
would no longer be effective?

-- 
Brian Ford
Staff Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-21 16:22       ` Brian Ford
@ 2011-12-21 16:51         ` Corinna Vinschen
  2011-12-22 18:51           ` Brian Ford
  2011-12-21 18:20         ` Brian Ford
  1 sibling, 1 reply; 22+ messages in thread
From: Corinna Vinschen @ 2011-12-21 16:51 UTC (permalink / raw)
  To: cygwin

On Dec 21 10:22, Brian Ford wrote:
> On Wed, 21 Dec 2011, Corinna Vinschen wrote:
> 
> > On Dec 21 15:20, Dave Korn wrote:
> > >   GCC assumes that the stack starts off 16-aligned when the OS hands over to
> > > the exe's entrypoint, and then makes sure it stays that way by always rounding
> > > stack frame sizes up to the nearest multiple of 16.  Or at any rate that's how
> > > it's supposed to work.
> >
> > Ok.  Does that mean my patch from
> > http://cygwin.com/ml/cygwin/2011-12/msg00435.html should be the right
> > thing to do for pthreads?  I guess I will have to do the same in
> > _dll_crt0 then...
> 
> Probably.  I'm trying to test now, but I haven't built cygwin in years now
> so I'm still working to get things set up.  I've also lost track of Cygwin
> internals.  Does it make sense to you that those two patches from 2004
> would no longer be effective?

Cygwin now sets up the stack by itself in both cases, WOW64 startup and
pthread_create.  I just made a test which showed pretty clearly that
the 16 byte alignment is required for the WOW64 case.  But that case
wasn't affected because it was already correctly aligned.

On second thought I'm a bit puzzled that the pthread stack isn't
correctly aligned as well.  Ignoring the pthread_attr_setstack case
which wasn't supported so far anyway, the OS stack set up by
CreateThread is 64K aligned.  From that 64K aligned StackBase value, I
subtract 12704 == 0x31a0 bytes.  So the result should be 16 byte
aligned even without the andl $-16, %%esp.  Why isn't it?!?
Does anybody care to tell me what's wrong with the assembler code in
thread_wrapper?


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-21 16:22       ` Brian Ford
  2011-12-21 16:51         ` Corinna Vinschen
@ 2011-12-21 18:20         ` Brian Ford
  2011-12-21 21:25           ` Brian Ford
  1 sibling, 1 reply; 22+ messages in thread
From: Brian Ford @ 2011-12-21 18:20 UTC (permalink / raw)
  To: cygwin

On Wed, 21 Dec 2011, Brian Ford wrote:

> I'm trying to test now, but I haven't built cygwin in years so I'm still
> working to get things set up.

Still trying, but getting the following warning turned into an error by
-Werror which looks like it might be valid?

cc1plus: warnings being treated as errors
src/winsup/cygwin/fhandler.cc:
In member function fhandler_base_overlapped::wait_return
fhandler_base_overlapped::wait_overlapped(bool, bool, DWORD*, bool,
DWORD):
src/winsup/cygwin/fhandler.cc:1912:
error: err may be used uninitialized in this function

-- 
Brian Ford
Staff Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-21 18:20         ` Brian Ford
@ 2011-12-21 21:25           ` Brian Ford
  2011-12-22  9:28             ` Corinna Vinschen
  0 siblings, 1 reply; 22+ messages in thread
From: Brian Ford @ 2011-12-21 21:25 UTC (permalink / raw)
  To: cygwin

On Wed, 21 Dec 2011, Brian Ford wrote:

> Still trying, but getting the following warning turned into an error by
> -Werror which looks like it might be valid?
>
> cc1plus: warnings being treated as errors
> src/winsup/cygwin/fhandler.cc:
> In member function fhandler_base_overlapped::wait_return
> fhandler_base_overlapped::wait_overlapped(bool, bool, DWORD*, bool,
> DWORD):
> src/winsup/cygwin/fhandler.cc:1912:
> error: err may be used uninitialized in this function

Thanks for the fix Christopher, but I must be using the wrong compiler or
something.  Here's my next issue:

src/winsup/cygwin/child_info.h:
In static member function static cygheap_exec_info*
cygheap_exec_info::alloc():
src/winsup/cygwin/child_info.h:115:
error: invalid use of member cygheap_exec_info::children in static member
function
src/winsup/cygwin/sigproc.cc:914:
error: from this location

-- 
Brian Ford
Staff Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-21 21:25           ` Brian Ford
@ 2011-12-22  9:28             ` Corinna Vinschen
  2011-12-22 15:20               ` Brian Ford
  0 siblings, 1 reply; 22+ messages in thread
From: Corinna Vinschen @ 2011-12-22  9:28 UTC (permalink / raw)
  To: cygwin

On Dec 21 15:25, Brian Ford wrote:
> On Wed, 21 Dec 2011, Brian Ford wrote:
> 
> > Still trying, but getting the following warning turned into an error by
> > -Werror which looks like it might be valid?
> >
> > cc1plus: warnings being treated as errors
> > src/winsup/cygwin/fhandler.cc:
> > In member function fhandler_base_overlapped::wait_return
> > fhandler_base_overlapped::wait_overlapped(bool, bool, DWORD*, bool,
> > DWORD):
> > src/winsup/cygwin/fhandler.cc:1912:
> > error: err may be used uninitialized in this function
> 
> Thanks for the fix Christopher, but I must be using the wrong compiler or
> something.  Here's my next issue:
> 
> src/winsup/cygwin/child_info.h:
> In static member function static cygheap_exec_info*
> cygheap_exec_info::alloc():
> src/winsup/cygwin/child_info.h:115:
> error: invalid use of member cygheap_exec_info::children in static member
> function
> src/winsup/cygwin/sigproc.cc:914:
> error: from this location

Did you try to drop the -Werror from the command line, for testing sake?


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-22  9:28             ` Corinna Vinschen
@ 2011-12-22 15:20               ` Brian Ford
  2011-12-22 15:32                 ` Corinna Vinschen
  0 siblings, 1 reply; 22+ messages in thread
From: Brian Ford @ 2011-12-22 15:20 UTC (permalink / raw)
  To: cygwin

On Thu, 22 Dec 2011, Corinna Vinschen wrote:

> On Dec 21 15:25, Brian Ford wrote:
> > On Wed, 21 Dec 2011, Brian Ford wrote:
> >
> > Thanks for the fix Christopher, but I must be using the wrong compiler or
> > something.  Here's my next issue:
> >
> > src/winsup/cygwin/child_info.h:
> > In static member function static cygheap_exec_info*
> > cygheap_exec_info::alloc():
> > src/winsup/cygwin/child_info.h:115:
> > error: invalid use of member cygheap_exec_info::children in static member
> > function
> > src/winsup/cygwin/sigproc.cc:914:
> > error: from this location
>
> Did you try to drop the -Werror from the command line, for testing sake?

No, because in this case it actually is an error, not one converted from a
warning.  Am I missing something, or shouldn't the cygwin sources compile
without this kind of difficulty?  Is this really just a difference between
the Cygwin gcc-4 and the one you guys use to cross compile?

-- 
Brian Ford
Staff Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-22 15:20               ` Brian Ford
@ 2011-12-22 15:32                 ` Corinna Vinschen
  2011-12-22 15:40                   ` Corinna Vinschen
  2011-12-22 15:48                   ` Brian Ford
  0 siblings, 2 replies; 22+ messages in thread
From: Corinna Vinschen @ 2011-12-22 15:32 UTC (permalink / raw)
  To: cygwin

On Dec 22 09:20, Brian Ford wrote:
> On Thu, 22 Dec 2011, Corinna Vinschen wrote:
> 
> > On Dec 21 15:25, Brian Ford wrote:
> > > On Wed, 21 Dec 2011, Brian Ford wrote:
> > >
> > > Thanks for the fix Christopher, but I must be using the wrong compiler or
> > > something.  Here's my next issue:
> > >
> > > src/winsup/cygwin/child_info.h:
> > > In static member function static cygheap_exec_info*
> > > cygheap_exec_info::alloc():
> > > src/winsup/cygwin/child_info.h:115:
> > > error: invalid use of member cygheap_exec_info::children in static member
> > > function
> > > src/winsup/cygwin/sigproc.cc:914:
> > > error: from this location
> >
> > Did you try to drop the -Werror from the command line, for testing sake?
> 
> No, because in this case it actually is an error, not one converted from a
> warning.  Am I missing something, or shouldn't the cygwin sources compile
> without this kind of difficulty?  Is this really just a difference between
> the Cygwin gcc-4 and the one you guys use to cross compile?

Should be basically the same compiler:

  i686-pc-cygwin-gcc (GCC) 4.5.3 20110428 (Fedora Cygwin 4.5.3-4)

The error message is kind of nonsense anyway.  The expression in question
is

  sizeof (cygheap_exec_info) + (nprocs * sizeof (children[0]))

so it's just a `sizeof', not an actual usage of the member.  Try this
for now:

Index: sigproc.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/sigproc.cc,v
retrieving revision 1.372
diff -u -p -r1.372 sigproc.cc
--- sigproc.cc	10 Dec 2011 01:33:56 -0000	1.372
+++ sigproc.cc	22 Dec 2011 15:30:58 -0000
@@ -911,7 +911,7 @@ cygheap_exec_info::alloc ()
 {
  return (cygheap_exec_info *) ccalloc_abort (HEAP_1_EXEC, 1,
 					     sizeof (cygheap_exec_info)
-					     + (nprocs * sizeof (children[0])));
+					     + (nprocs * sizeof (cchildren)));
 }
 
 void


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-22 15:32                 ` Corinna Vinschen
@ 2011-12-22 15:40                   ` Corinna Vinschen
  2011-12-22 15:50                     ` Brian Ford
  2011-12-22 15:48                   ` Brian Ford
  1 sibling, 1 reply; 22+ messages in thread
From: Corinna Vinschen @ 2011-12-22 15:40 UTC (permalink / raw)
  To: cygwin

On Dec 22 16:31, Corinna Vinschen wrote:
> On Dec 22 09:20, Brian Ford wrote:
> > On Thu, 22 Dec 2011, Corinna Vinschen wrote:
> > 
> > > On Dec 21 15:25, Brian Ford wrote:
> > > > On Wed, 21 Dec 2011, Brian Ford wrote:
> > > >
> > > > Thanks for the fix Christopher, but I must be using the wrong compiler or
> > > > something.  Here's my next issue:
> > > >
> > > > src/winsup/cygwin/child_info.h:
> > > > In static member function static cygheap_exec_info*
> > > > cygheap_exec_info::alloc():
> > > > src/winsup/cygwin/child_info.h:115:
> > > > error: invalid use of member cygheap_exec_info::children in static member
> > > > function
> > > > src/winsup/cygwin/sigproc.cc:914:
> > > > error: from this location
> > >
> > > Did you try to drop the -Werror from the command line, for testing sake?
> > 
> > No, because in this case it actually is an error, not one converted from a
> > warning.  Am I missing something, or shouldn't the cygwin sources compile
> > without this kind of difficulty?  Is this really just a difference between
> > the Cygwin gcc-4 and the one you guys use to cross compile?
> 
> Should be basically the same compiler:
> 
>   i686-pc-cygwin-gcc (GCC) 4.5.3 20110428 (Fedora Cygwin 4.5.3-4)
> 
> The error message is kind of nonsense anyway.  The expression in question
> is
> 
>   sizeof (cygheap_exec_info) + (nprocs * sizeof (children[0]))
> 
> so it's just a `sizeof', not an actual usage of the member.  Try this
> for now:

Btw., you are apparently not running the latest gcc-4.  I just tried to
compile this file (without my patch) on Cygwin and it works fine without
any warning or error:

  $ gcc --version
  gcc (GCC) 4.5.3
  $ cygcheck -c gcc4
  Cygwin Package Information
  Package              Version        Status
  gcc4                 4.5.3-3        OK


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-22 15:32                 ` Corinna Vinschen
  2011-12-22 15:40                   ` Corinna Vinschen
@ 2011-12-22 15:48                   ` Brian Ford
  1 sibling, 0 replies; 22+ messages in thread
From: Brian Ford @ 2011-12-22 15:48 UTC (permalink / raw)
  To: cygwin

On Thu, 22 Dec 2011, Corinna Vinschen wrote:

> The error message is kind of nonsense anyway.  The expression in question
> is
>
>   sizeof (cygheap_exec_info) + (nprocs * sizeof (children[0]))
>
> so it's just a `sizeof', not an actual usage of the member.  Try this
> for now:
>
> Index: sigproc.cc
> ===================================================================
> RCS file: /cvs/src/src/winsup/cygwin/sigproc.cc,v
> retrieving revision 1.372
> diff -u -p -r1.372 sigproc.cc
> --- sigproc.cc	10 Dec 2011 01:33:56 -0000	1.372
> +++ sigproc.cc	22 Dec 2011 15:30:58 -0000
> @@ -911,7 +911,7 @@ cygheap_exec_info::alloc ()
>  {
>   return (cygheap_exec_info *) ccalloc_abort (HEAP_1_EXEC, 1,
>  					     sizeof (cygheap_exec_info)
> -					     + (nprocs * sizeof (children[0])));
> +					     + (nprocs * sizeof (cchildren)));
>  }

FWIW, that worked.

-- 
Brian Ford
Staff Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-22 15:40                   ` Corinna Vinschen
@ 2011-12-22 15:50                     ` Brian Ford
  0 siblings, 0 replies; 22+ messages in thread
From: Brian Ford @ 2011-12-22 15:50 UTC (permalink / raw)
  To: cygwin

On Thu, 22 Dec 2011, Corinna Vinschen wrote:

> Btw., you are apparently not running the latest gcc-4.  I just tried to
> compile this file (without my patch) on Cygwin and it works fine without
> any warning or error:
>
>   $ gcc --version
>   gcc (GCC) 4.5.3

You are correct, although I just ran setup yesterday and it said I was up
to date.

$ gcc-4 --version
gcc-4 (GCC) 4.3.4 20090804 (release) 1

>   $ cygcheck -c gcc4
>   Cygwin Package Information
>   Package              Version        Status
>   gcc4                 4.5.3-3        OK

$ cygcheck -c gcc4
Cygwin Package Information
Package              Version        Status

Evidently, setup somehow lost track that I had gcc-4 installed (confused).

Thank you for your patience.

-- 
Brian Ford
Staff Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-21 16:51         ` Corinna Vinschen
@ 2011-12-22 18:51           ` Brian Ford
  2011-12-23 13:53             ` Corinna Vinschen
  0 siblings, 1 reply; 22+ messages in thread
From: Brian Ford @ 2011-12-22 18:51 UTC (permalink / raw)
  To: cygwin

On Wed, 21 Dec 2011, Corinna Vinschen wrote:

> On second thought I'm a bit puzzled that the pthread stack isn't
> correctly aligned as well.  Ignoring the pthread_attr_setstack case
> which wasn't supported so far anyway, the OS stack set up by
> CreateThread is 64K aligned.  From that 64K aligned StackBase value, I
> subtract 12704 == 0x31a0 bytes.  So the result should be 16 byte
> aligned even without the andl $-16, %%esp.  Why isn't it?!?

It appears it is, here.

> Does anybody care to tell me what's wrong with the assembler code in
> thread_wrapper?

I don't pretend to understand why, but it appears gcc is expecting the
stack to be 16 byte aligned on entry to the called function, which
includes the 4 byte argument and the 4 byte return address in this case.
I could be wrong, but it appears that would do it.

For a long discussion by those who apparently agree with you about how
crazy this is see:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40838

It looks like gcc 4.6 may finally "do the right thing" itself.

-- 
Brian Ford
Staff Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-22 18:51           ` Brian Ford
@ 2011-12-23 13:53             ` Corinna Vinschen
  2011-12-28  0:12               ` Brian Ford
  0 siblings, 1 reply; 22+ messages in thread
From: Corinna Vinschen @ 2011-12-23 13:53 UTC (permalink / raw)
  To: cygwin

On Dec 22 12:51, Brian Ford wrote:
> On Wed, 21 Dec 2011, Corinna Vinschen wrote:
> 
> > On second thought I'm a bit puzzled that the pthread stack isn't
> > correctly aligned as well.  Ignoring the pthread_attr_setstack case
> > which wasn't supported so far anyway, the OS stack set up by
> > CreateThread is 64K aligned.  From that 64K aligned StackBase value, I
> > subtract 12704 == 0x31a0 bytes.  So the result should be 16 byte
> > aligned even without the andl $-16, %%esp.  Why isn't it?!?
> 
> It appears it is, here.
> 
> > Does anybody care to tell me what's wrong with the assembler code in
> > thread_wrapper?
> 
> I don't pretend to understand why, but it appears gcc is expecting the
> stack to be 16 byte aligned on entry to the called function, which
> includes the 4 byte argument and the 4 byte return address in this case.
> I could be wrong, but it appears that would do it.

Sorry, but what I don't get from your reply is if the andl worked or
not.  Is the alignment correct now or do I have to move the stack down
by another 8 bytes to account for the argument and the stack address?


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-23 13:53             ` Corinna Vinschen
@ 2011-12-28  0:12               ` Brian Ford
  2012-01-09 14:14                 ` Corinna Vinschen
  0 siblings, 1 reply; 22+ messages in thread
From: Brian Ford @ 2011-12-28  0:12 UTC (permalink / raw)
  To: cygwin

[-- Attachment #1: Type: text/plain, Size: 2216 bytes --]

On Fri, 23 Dec 2011, Corinna Vinschen wrote:

> On Dec 22 12:51, Brian Ford wrote:
> > On Wed, 21 Dec 2011, Corinna Vinschen wrote:
> >
> > > On second thought I'm a bit puzzled that the pthread stack isn't
> > > correctly aligned as well.  Ignoring the pthread_attr_setstack case
> > > which wasn't supported so far anyway, the OS stack set up by
> > > CreateThread is 64K aligned.  From that 64K aligned StackBase value, I
> > > subtract 12704 == 0x31a0 bytes.  So the result should be 16 byte
> > > aligned even without the andl $-16, %%esp.  Why isn't it?!?
> >
> > It appears it is, here.
> >
> > > Does anybody care to tell me what's wrong with the assembler code in
> > > thread_wrapper?
> >
> > I don't pretend to understand why, but it appears gcc is expecting the
> > stack to be 16 byte aligned on entry to the called function, which
> > includes the 4 byte argument and the 4 byte return address in this case.
> > I could be wrong, but it appears that would do it.

After studying this more today, I was wrong in my description of the cause
and fix above.  It appears the stack needs to be 16 byte aligned at the
call instruction.  That is, before the return address is pushed.

> Sorry, but what I don't get from your reply is if the andl worked or
> not.

No; by itself, it does not.  Adding a "subl $12, %%esp" following it so
that the stack is 16 byte aligned after the thread arg is pushed does
work.  There are probably more efficient and/or cleaner ways of doing it
though.

STC attached, but note that it seems to always pass with gcc-4.  Only gcc
3.4.4 appears to require the extra alignment.

PS. Note that with my custom built cygwin DLL from CVS today, I can't
compile the STC:

gcc -g -O2 -Wall pthread_sse_align.c -o pthread_sse_align.exe
pthread_sse_align.c:0: fatal error: can't open /tmp/ccMkTl4f.s for
writing: No such file or directory compilation terminated.

Also, every error message from an abnormally exiting application
(including when the attached test case fails) mysteriously seems to print
4-6 times?

-- 
Brian Ford
Staff Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

[-- Attachment #2: Type: text/plain, Size: 972 bytes --]

#include <pthread.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define ALIGN16(a) a __attribute__((aligned (16)))

void *run_test(void *arg)
{
    ALIGN16(char t[16]);

    if ((long)&t[0] & 15)
    {
	fprintf(stderr, "pthread 16 byte stack variable alignment failed: t %p\n", &t[0]);
	exit(-1);
    }

    return NULL;
}

int main(int argc, char *argv[])
{
    ALIGN16(char m[16]);
    int       stat;
    pthread_t tid;

    if ((long)&m[0] & 15)
    {
	fprintf(stderr, "main thread 16 byte stack variable alignment failed: m %p\n", &m[0]);
	return -1;
    }

    stat = pthread_create(&tid, NULL, &run_test, NULL);
    if (stat)
    {
	fprintf(stderr, "pthread_create failed: %s\n", strerror(stat));
	return -1;
    }

    stat = pthread_join(tid, NULL);
    if (stat)
    {
	fprintf(stderr, "pthread_join failed: %s\n", strerror(stat));
	return -1;
    }

    printf("Test passed\n");
    return 0;
}

[-- Attachment #3: Type: text/plain, Size: 218 bytes --]

--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2011-12-28  0:12               ` Brian Ford
@ 2012-01-09 14:14                 ` Corinna Vinschen
  2012-01-09 15:41                   ` Brian Ford
  0 siblings, 1 reply; 22+ messages in thread
From: Corinna Vinschen @ 2012-01-09 14:14 UTC (permalink / raw)
  To: cygwin

On Dec 27 18:06, Brian Ford wrote:
> On Fri, 23 Dec 2011, Corinna Vinschen wrote:
> 
> > On Dec 22 12:51, Brian Ford wrote:
> > > On Wed, 21 Dec 2011, Corinna Vinschen wrote:
> > >
> > > > On second thought I'm a bit puzzled that the pthread stack isn't
> > > > correctly aligned as well.  Ignoring the pthread_attr_setstack case
> > > > which wasn't supported so far anyway, the OS stack set up by
> > > > CreateThread is 64K aligned.  From that 64K aligned StackBase value, I
> > > > subtract 12704 == 0x31a0 bytes.  So the result should be 16 byte
> > > > aligned even without the andl $-16, %%esp.  Why isn't it?!?
> > >
> > > It appears it is, here.
> > >
> > > > Does anybody care to tell me what's wrong with the assembler code in
> > > > thread_wrapper?
> > >
> > > I don't pretend to understand why, but it appears gcc is expecting the
> > > stack to be 16 byte aligned on entry to the called function, which
> > > includes the 4 byte argument and the 4 byte return address in this case.
> > > I could be wrong, but it appears that would do it.
> 
> After studying this more today, I was wrong in my description of the cause
> and fix above.  It appears the stack needs to be 16 byte aligned at the
> call instruction.  That is, before the return address is pushed.
> 
> > Sorry, but what I don't get from your reply is if the andl worked or
> > not.
> 
> No; by itself, it does not.  Adding a "subl $12, %%esp" following it so
> that the stack is 16 byte aligned after the thread arg is pushed does
> work.  There are probably more efficient and/or cleaner ways of doing it
> though.
> 
> STC attached, but note that it seems to always pass with gcc-4.  Only gcc
> 3.4.4 appears to require the extra alignment.

Ok, this is even more puzzeling.  The thread function called from the
thread_wrapper function is NOT the application thread function, but
the Cygwin internal function thread_init_wrapper.  Given that this
function is built with the same gcc 4.x compiler as the rest of Cygwin,
how on earth can this fail at all?  Shouldn't the alignment be always
correct on the subsequent call to the application function, given that
gcc-4 is supposed to care?

Dave, can you explain this?


Corinna


-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2012-01-09 14:14                 ` Corinna Vinschen
@ 2012-01-09 15:41                   ` Brian Ford
  2012-01-09 17:36                     ` Corinna Vinschen
  0 siblings, 1 reply; 22+ messages in thread
From: Brian Ford @ 2012-01-09 15:41 UTC (permalink / raw)
  To: cygwin

On Mon, 9 Jan 2012, Corinna Vinschen wrote:

> On Dec 27 18:06, Brian Ford wrote:
> > On Fri, 23 Dec 2011, Corinna Vinschen wrote:
> >
> > > Sorry, but what I don't get from your reply is if the andl worked or
> > > not.
> >
> > No; by itself, it does not.  Adding a "subl $12, %%esp" following it so
> > that the stack is 16 byte aligned after the thread arg is pushed does
> > work.  There are probably more efficient and/or cleaner ways of doing it
> > though.
> >
> > STC attached, but note that it seems to always pass with gcc-4.  Only gcc
> > 3.4.4 appears to require the extra alignment.
>
> Ok, this is even more puzzeling.  The thread function called from the
> thread_wrapper function is NOT the application thread function, but the
> Cygwin internal function thread_init_wrapper.  Given that this function
> is built with the same gcc 4.x compiler as the rest of Cygwin, how on
> earth can this fail at all? Shouldn't the alignment be always correct on
> the subsequent call to the application function, given that gcc-4 is
> supposed to care?

I'm speculating, but I believe gcc-4 only re-aligns the stack in case an
instruction in that function requires more strict alignment than the
default ABI to save overhead.

-- 
Brian Ford
Staff Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
the best safety device in any aircraft is a well-trained crew...

--
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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 16 byte pthread stack alignments
  2012-01-09 15:41                   ` Brian Ford
@ 2012-01-09 17:36                     ` Corinna Vinschen
  0 siblings, 0 replies; 22+ messages in thread
From: Corinna Vinschen @ 2012-01-09 17:36 UTC (permalink / raw)
  To: cygwin

On Jan  9 09:41, Brian Ford wrote:
> On Mon, 9 Jan 2012, Corinna Vinschen wrote:
> 
> > On Dec 27 18:06, Brian Ford wrote:
> > > On Fri, 23 Dec 2011, Corinna Vinschen wrote:
> > >
> > > > Sorry, but what I don't get from your reply is if the andl worked or
> > > > not.
> > >
> > > No; by itself, it does not.  Adding a "subl $12, %%esp" following it so
> > > that the stack is 16 byte aligned after the thread arg is pushed does
> > > work.  There are probably more efficient and/or cleaner ways of doing it
> > > though.
> > >
> > > STC attached, but note that it seems to always pass with gcc-4.  Only gcc
> > > 3.4.4 appears to require the extra alignment.
> >
> > Ok, this is even more puzzeling.  The thread function called from the
> > thread_wrapper function is NOT the application thread function, but the
> > Cygwin internal function thread_init_wrapper.  Given that this function
> > is built with the same gcc 4.x compiler as the rest of Cygwin, how on
> > earth can this fail at all? Shouldn't the alignment be always correct on
> > the subsequent call to the application function, given that gcc-4 is
> > supposed to care?
> 
> I'm speculating, but I believe gcc-4 only re-aligns the stack in case an
> instruction in that function requires more strict alignment than the
> default ABI to save overhead.

Maybe.  I applied that patch which also makes gcc 3 happy.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          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

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2012-01-09 17:36 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-20 23:45 16 byte pthread stack alignments Brian Ford
2011-12-21  9:42 ` Corinna Vinschen
2011-12-21 10:46   ` Corinna Vinschen
2011-12-21 15:20   ` Dave Korn
2011-12-21 15:41     ` Corinna Vinschen
2011-12-21 16:22       ` Brian Ford
2011-12-21 16:51         ` Corinna Vinschen
2011-12-22 18:51           ` Brian Ford
2011-12-23 13:53             ` Corinna Vinschen
2011-12-28  0:12               ` Brian Ford
2012-01-09 14:14                 ` Corinna Vinschen
2012-01-09 15:41                   ` Brian Ford
2012-01-09 17:36                     ` Corinna Vinschen
2011-12-21 18:20         ` Brian Ford
2011-12-21 21:25           ` Brian Ford
2011-12-22  9:28             ` Corinna Vinschen
2011-12-22 15:20               ` Brian Ford
2011-12-22 15:32                 ` Corinna Vinschen
2011-12-22 15:40                   ` Corinna Vinschen
2011-12-22 15:50                     ` Brian Ford
2011-12-22 15:48                   ` Brian Ford
2011-12-21 16:13   ` Brian Ford

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).