Hi Willy,

Thanks for the reply.

I should have stated that I'm not at a point of trying to install or deploy
haproxy, yet.  I'm starting to evaluate haproxy and some other products
that can run on Solaris/SPARC as TCP reverse proxies with SSL
termination.   I will also look at stunnel and nginx.

I wasn't able to find any documented post-build verification step that will
run through a battery of automated haproxy regression tests.  Is there such
a thing in the 1.8 branch?

Yes, writing automated tests for different race conditions involving
concurrent threads is tricky.  In our app we do a combination of stress
tests that run for long periods of time combined with instrumented code in
places to raise and lower barriers to force a particular sequence of thread
execution to help verify synchronization is working as intended.  That
said, I didn't intend to limit my question to thread testing of the build.

When I get to work later today I'll see if I can provide you more detail on
the issue I encountered with __thread.  I doubt we will have any need to
run with threads so building without thread support is an option, too.

Thanks,
-- Tom

On Wed, Aug 29, 2018 at 8:29 PM Willy Tarreau <[email protected]> wrote:

> Hi Tom,
>
> On Wed, Aug 29, 2018 at 05:05:20PM -0700, Tom Hood wrote:
> > Hi,
> >
> > I've built haproxy 1.8.9 with gcc 4.2.0 on Solaris 10, but I'm not sure
> how
> > to verify my build.
>
> Well, first and foremost, you must absolutely use an up-to-date version
> in the branch you choose. Latest version in the 1.8 branch currently is
> 1.8.13 so there is no reason to purposely install a version containing a
> number of well known bugs that were already fixed in more recent versions.
>
> > I had to define THREAD_LOCAL to be empty in
> > include/common/config.h, but otherwise it seemed to build cleanly.
>
> I find this strange because it is already defined as empty there if
> USE_THREAD is not set. And if USE_THREAD is set, you absolutely need
> to have this defined to __thread as it's a compiler indication that
> the variable is thread-local (per thread) instead of shared.
>
> > Build command:  gmake TARGET=solaris CPU=ultrasparc USE_OPENSSL=1
> > SSL_INC=<includepath> SSL_LIB=<libpath>
> >
> > It "seems" to work for what I'm using it for on Solaris 11.3 (TCP reverse
> > proxy with SSL termination).
>
> If you're using threads it will definitely fail without __thread.
>
> > Based on forum thread regression testing for haproxy
> > <https://www.mail-archive.com/[email protected]/msg30287.html> it
> looks
> > like maybe there isn't any automated testing of my haproxy build I can do
> > yet?
> >
> > I see the "tests" directory, but I'm not sure what I'm supposed to do
> with
> > that.  I don't see any expected result files for each test case?
>
> The problem with threads is that it solely relies on luck, so by definition
> it's hard to build a test to verify that what you've built uses correct
> locking. The simple fact that it did not build and you had to modify it
> is the problematic part. If you don't need threads, please try to build
> adding "USE_THREAD=" (no value) to your make command to disable use of
> threads. At least you will not risk to face any thread-related issue.
> However I'm definitely interested in figuring why __thread does not
> work there! At least from what I'm reading below, it is expected to
> work just like on any other system :
>
>    https://docs.oracle.com/cd/E26502_01/html/E26507/gentextid-23018.html
>
> Regards,
> Willy
>

Reply via email to