[GHC] #10368: Armhf/Linux : test T7815 failing

#10368: Armhf/Linux : test T7815 failing -------------------------------------+------------------------------------- Reporter: erikd | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.11 Keywords: | Operating System: Unknown/Multiple Architecture: arm | Type of failure: Incorrect result Test Case: | at runtime Blocking: | Blocked By: Differential Revisions: | Related Tickets: -------------------------------------+------------------------------------- During validation on armhf/linux, I found this test had failed. Unfortunately, it only fails intermittently on one quad core Arm board and not at all on another quad core Arm board. If I do 10 runs of the test like: {{{ for x in $(seq 1 10) ; do testsuite/tests/rts/T7815 50000 +RTS -N2 ; echo $? ; done }}} one will fail at least 4 or 5 times and ocassionally as many as 9 or 10 times. The two boards are: * Inforce Computing ifc6540 with a Qualcomm Snapdragon 805 CPU. * Radxa Rock with a Rockchip RK3199 CPU. The ifc6540 is the one that fails. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10368 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#10368: Armhf/Linux : test T7815 failing -------------------------------------+------------------------------------- Reporter: erikd | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.11 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: arm Type of failure: Incorrect result | Test Case: at runtime | Blocking: Blocked By: | Differential Revisions: Related Tickets: #7815 | -------------------------------------+------------------------------------- Changes (by erikd): * related: => #7815 -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10368#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#10368: Armhf/Linux : test T7815 failing -------------------------------------+------------------------------------- Reporter: erikd | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.11 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: arm Type of failure: Incorrect result | Test Case: at runtime | Blocking: Blocked By: | Differential Revisions: Related Tickets: #7815 | -------------------------------------+------------------------------------- Comment (by erikd): There is a pretty good explanation of weak vs strong memory models here : http://preshing.com/20120930/weak-vs-strong-memory-models/ -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10368#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#10368: STM test failing on Armhf/Linux -------------------------------------+------------------------------------- Reporter: erikd | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.11 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: arm Type of failure: Incorrect result | Test Case: at runtime | Blocking: Blocked By: | Differential Revisions: Related Tickets: #7815 | -------------------------------------+------------------------------------- Description changed by erikd: Old description:
During validation on armhf/linux, I found this test had failed.
Unfortunately, it only fails intermittently on one quad core Arm board and not at all on another quad core Arm board. If I do 10 runs of the test like:
{{{ for x in $(seq 1 10) ; do testsuite/tests/rts/T7815 50000 +RTS -N2 ; echo $? ; done }}}
one will fail at least 4 or 5 times and ocassionally as many as 9 or 10 times.
The two boards are:
* Inforce Computing ifc6540 with a Qualcomm Snapdragon 805 CPU. * Radxa Rock with a Rockchip RK3199 CPU.
The ifc6540 is the one that fails.
New description: During validation on armhf/linux, I found that test T7815 had failed. Unfortunately, it only fails intermittently on one quad core Arm board and not at all on another quad core Arm board. If I do 10 runs of the test like: {{{ for x in $(seq 1 10) ; do testsuite/tests/rts/T7815 50000 +RTS -N2 ; echo $? ; done }}} one will fail at least 4 or 5 times and ocassionally as many as 9 or 10 times. The two boards are: * Inforce Computing ifc6540 with a Qualcomm Snapdragon 805 CPU. * Radxa Rock with a Rockchip RK3199 CPU. The ifc6540 is the one that fails. @fryguybob suggests that this is actually a bug in the STM implementation that breaks on Arm because of Arm's weaker memory consistency model. -- -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10368#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#10368: STM test failing on Armhf/Linux -------------------------------------+------------------------------------- Reporter: erikd | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.11 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: arm Type of failure: Incorrect result | Test Case: at runtime | Blocking: Blocked By: | Differential Revisions: Related Tickets: #7815 | -------------------------------------+------------------------------------- Comment (by erikd): From @fryguybob on IRC : The right thing to do would probably be to see what it would take to build that part of the RTS with C11 atomics. There might be some relivant cmm code, but I think all of the locking is conveniently located in C land. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10368#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#10368: STM test failing on Armhf/Linux -------------------------------------+------------------------------------- Reporter: erikd | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.11 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: arm Type of failure: Incorrect result | Test Case: at runtime | Blocked By: | Blocking: Related Tickets: #7815 | Differential Revisions: -------------------------------------+------------------------------------- Comment (by fryguybob): Noting here, an easier way forward is to use the coarse-grain implementation instead and make sure that the lock acquire and release of the global lock are correct for ARM. This should be good for a couple of cores. Note that an important performance bug to fix would be the one addressed here: https://github.com/fryguybob/ghc/commit/6e1df4eac2c2806b87561c5d3876ba4b50e5... -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10368#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#10368: STM test failing on Armhf/Linux -------------------------------------+------------------------------------- Reporter: erikd | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.11 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: arm Type of failure: Incorrect result | Test Case: at runtime | Blocked By: | Blocking: Related Tickets: #7815 | Differential Revisions: -------------------------------------+------------------------------------- Comment (by erikd): I'm not sure what has changed, but I am now unable to get any of my ARM boards to fail this test reliably with the fine grained locks. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10368#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#10368: STM test failing on Armhf/Linux -------------------------------------+------------------------------------- Reporter: erikd | Owner: Type: bug | Status: closed Priority: normal | Milestone: 8.0.1 Component: Compiler | Version: 7.11 Resolution: worksforme | Keywords: Operating System: Unknown/Multiple | Architecture: arm Type of failure: Incorrect result | Test Case: at runtime | Blocked By: | Blocking: Related Tickets: #7815 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by bgamari): * status: new => closed * resolution: => worksforme Comment: I also failed to reproduce this with a four-core A15 box with 7.11. Closing. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10368#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC