activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Albert Strasheim (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AMQCPP-25) Bus error on Solaris OS from DataInput and DataOutput streams
Date Thu, 11 Jan 2007 16:23:48 GMT

    [ https://issues.apache.org/activemq/browse/AMQCPP-25?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_37891
] 

Albert Strasheim commented on AMQCPP-25:
----------------------------------------

Re: your first question. As we tried to debug this issue, we added some printfs to check values
of variables and we noticed that the bugs would go away. Basically, any bit of code that changes
the way the compiler optimizes the function can make the bug disappear (but it's still a bug).
char c = new char, delete c is just the smallest bit of code we could come up with that would
make the bug disappear.

As for how to fix this, I did some further reading.

Check this page:

http://www.cellperformance.com/mike_acton/2006/05/demystifying_the_restrict_keyw.html

In the summary they say:

"... Enable strict aliasing related warnings with -Wstrict-aliasing, but do not expect to
be warned in all cases."

Most of the GCC versions I've tried *don't* warn on the strict aliasing violations in the
current AMQCPP code. If we want to leave strict aliasing enabled, we'll have to give the code
a quick review and carefully look at any future changes for strict aliasing bugs, since the
compiler won't necessarily warn us.

The Python folks went for the opposite approach: any C module you build with distuils is compiled
with -fno-strict-aliasing, as people were probably running into this problem frequently.

If AMQCPP goes the -fno-strict-aliasing route, we'll still have to check that we don't leak
code that requires this option outside of the library. Fortunately this is easy -- put function
implementations in cpp files so that users don't compile bits of the library when compiling
their code. Linking against a library is fine, regardless of its strict aliasing flags.

Of course if you have any templated stuff, you should probably make sure to not write code
that depends on strict aliasing flags.

> Bus error on Solaris OS from DataInput and DataOutput streams
> -------------------------------------------------------------
>
>                 Key: AMQCPP-25
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-25
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>          Components: CMS Impl
>    Affects Versions: 1.1
>         Environment: Solaris 10 OS
>            Reporter: Timothy Bish
>         Assigned To: Timothy Bish
>            Priority: Minor
>             Fix For: 1.1
>
>         Attachments: optobug.cpp
>
>
> Due to misaligned memory reads, there is a bus error that can occur in using the new
DataInputStream and DataOutputStream classes.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message