Problems with test suite on alpha

Hi PPL developers,
I've reported problems with some test cases because of suspected gcc bugs on alpha earlier already. Now it seems that even more test cases are broken, most probably because of the very same bug (I suspect it to be http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8966). My question now is: How to proceed? Shall I specifically disable the failing test cases by surrounding them with an #ifndef __alpha__ or disable the entire test suite on alpha?
Thanks, Michael

Michael Tautschnig wrote:
I've reported problems with some test cases because of suspected gcc bugs on alpha earlier already. Now it seems that even more test cases are broken, most probably because of the very same bug (I suspect it to be http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8966). My question now is: How to proceed? Shall I specifically disable the failing test cases by surrounding them with an #ifndef __alpha__ or disable the entire test suite on alpha?
Hi Michael,
from what you write, there is a bug in GCC concerning exception handling on the Alpha. Strictily speaking, the PPL uses exception handling, so if that does not work on the Alpha, the PPL does not work on the Alpha. And there is nothing to do but fix the GCC bug.
However, if that GCC bug really only affects exception handling and nothing else, given that the PPL only uses exceptions for error reporting, we can probably say that the PPL works on the Alpha *apart* from error reporting.
Let us focus on the role of PPL for Graphite (which uses the C interface): I believe that this application does not exploit the ability of PPL to continue after an out-of-memory condition or an arithmetic-overflow. If this is true, then any error raised by the PPL would cause an ICE in GCC. If dying with an uncaught exception is considered not significantly worse than dying with an ICE, then there should be no problem. In this hypothesis, the failures you observe are only for test programs that exercise the error-reporting capabilities of the PPL: I would disable just those on the Alpha.
Then the Debian/Alpha users should probably be warned that the PPL package they have does not possess all the properties explained in the PPL documentation, i.e., all the error reporting features are badly broken. Cheers,
Roberto

[...]
Let us focus on the role of PPL for Graphite (which uses the C interface): I believe that this application does not exploit the ability of PPL to continue after an out-of-memory condition or an arithmetic-overflow. If this is true, then any error raised by the PPL would cause an ICE in GCC. If dying with an uncaught exception is considered not significantly worse than dying with an ICE, then there should be no problem. In this hypothesis, the failures you observe are only for test programs that exercise the error-reporting capabilities of the PPL: I would disable just those on the Alpha.
I think that this is the case; I think it's up to the GCC devs to decide whether this is a problem for them or not -- I've added my 2cents to the GCC PR and I'm still hoping for the guys to fix it, even though it is outstanding for quite some time now.
Then the Debian/Alpha users should probably be warned that the PPL package they have does not possess all the properties explained in the PPL documentation, i.e., all the error reporting features are badly broken.
I'll try to make this explicit in the Debian changelog.
Best, Michael

Hi again,
Michael Tautschnig wrote:
I've reported problems with some test cases because of suspected gcc bugs on alpha earlier already. Now it seems that even more test cases are broken, most probably because of the very same bug (I suspect it to be http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8966). My question now is: How to proceed? Shall I specifically disable the failing test cases by surrounding them with an #ifndef __alpha__ or disable the entire test suite on alpha?
Hi Michael,
from what you write, there is a bug in GCC concerning exception handling on the Alpha. Strictily speaking, the PPL uses exception handling, so if that does not work on the Alpha, the PPL does not work on the Alpha. And there is nothing to do but fix the GCC bug.
It was suggested that I retry the PPL build with GCC 4.5 and it seemed to work fine (well, of course I first removed all the #ifndef __alpha__ stuff). The interesting thing, however, is that the problems seem to have been resolved with GCC 4.4 or even earlier already. Whatever exactly might have fixed the problem, in my opinion it would be best to remove all the #ifndef __alpha__ and see whether the problem ever occurs again.
Best regards, Michael

On 09/09/2010 08:28 AM, Michael Tautschnig wrote:
Michael Tautschnig wrote:
I've reported problems with some test cases because of suspected gcc bugs on alpha earlier already. Now it seems that even more test cases are broken, most probably because of the very same bug (I suspect it to be http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8966). My question now is: How to proceed? Shall I specifically disable the failing test cases by surrounding them with an #ifndef __alpha__ or disable the entire test suite on alpha?
Hi Michael,
from what you write, there is a bug in GCC concerning exception handling on the Alpha. Strictily speaking, the PPL uses exception handling, so if that does not work on the Alpha, the PPL does not work on the Alpha. And there is nothing to do but fix the GCC bug.
It was suggested that I retry the PPL build with GCC 4.5 and it seemed to work fine (well, of course I first removed all the #ifndef __alpha__ stuff). The interesting thing, however, is that the problems seem to have been resolved with GCC 4.4 or even earlier already. Whatever exactly might have fixed the problem, in my opinion it would be best to remove all the #ifndef __alpha__ and see whether the problem ever occurs again.
Hi Michael,
thanks for the update. How about changing all the #ifndef __alpha__ to
#if !defined(__alpha__) \ || !defined(__GNUC__) \ || __GNUC__ > 4 \ || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
? Cheers,
Roberto

Hi!
[...]
thanks for the update. How about changing all the #ifndef __alpha__ to
#if !defined(__alpha__) \ || !defined(__GNUC__) \ || __GNUC__ > 4 \ || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
Although this is completely up to you to decide, I just wanted to add that this only concerns the test suite; so maybe it's even better to make it fail such that people notice there might be a problem on their system.
Best regards, Michael

On 09/09/2010 03:05 PM, Michael Tautschnig wrote:
Hi!
[...]
thanks for the update. How about changing all the #ifndef __alpha__ to
#if !defined(__alpha__) \ || !defined(__GNUC__) \ || __GNUC__> 4 \ || (__GNUC__ == 4&& __GNUC_MINOR__>= 4)
Although this is completely up to you to decide, I just wanted to add that this only concerns the test suite; so maybe it's even better to make it fail such that people notice there might be a problem on their system.
You are right, of course. Thanks,
Roberto
participants (2)
-
Michael Tautschnig
-
Roberto Bagnara