Forum: Ruby-core [ruby-trunk - Bug #6592][Open] test_call_double(DL::TestDL) fails on ARM HardFP

Posted by Vít Ondruch (vo_x)
on 2012-06-14 10:13
(Received via mailing list)
Issue #6592 has been reported by vo.x (Vit Ondruch).

----------------------------------------
Bug #6592: test_call_double(DL::TestDL) fails on ARM HardFP
https://bugs.ruby-lang.org/issues/6592

Author: vo.x (Vit Ondruch)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-06-05 trunk 35922) [armv7hl-linux]


Hi,

I am observing following test suite error on armv7hl Fedora 17 [1] (but 
it seems that Debian suffers the same issues [3]):

  2) Failure:
test_call_double(DL::TestDL) 
[/builddir/build/BUILD/ruby-2.0.0-r35922/test/dl/test_dl2.rb:90]:
Expected |0.1 - 2.1638932342073e-311| (0.1) to be < 0.001.

I was digging a bit deeper and I identified issue in this part of code 
[2]. I tried a bit to unfold the macros and found, that the issue is 
because of variadic arguments. If the function prototype is declared 
without them (novar.disasm), the test passes, if they are in use 
(variadic.disasm), the test fails. The attached files shows the code 
with partially unfolded marcos and their disassembly. The atof.disasm 
contains the disassembly of the atof call if it might be of help.

I am not sure if it might be compiler bug (GCC 4.7) or if it should be 
fixed in Ruby. Any help appreciated


[1] 
http://arm.koji.fedoraproject.org/koji/getfile?tas...
[2] https://github.com/ruby/ruby/blob/v1_9_3_195/ext/d...
[3] 
https://buildd.debian.org/status/fetch.php?pkg=rub...
Posted by Vít Ondruch (vo_x)
on 2012-06-14 10:25
(Received via mailing list)
Issue #6592 has been updated by vo.x (Vit Ondruch).


This might be of reference [1], particularly the 5.4 and 5.5 chapters.


[1] 
http://infocenter.arm.com/help/topic/com.arm.doc.i...
----------------------------------------
Bug #6592: test_call_double(DL::TestDL) fails on ARM HardFP
https://bugs.ruby-lang.org/issues/6592#change-27247

Author: vo.x (Vit Ondruch)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-06-05 trunk 35922) [armv7hl-linux]


Hi,

I am observing following test suite error on armv7hl Fedora 17 [1] (but 
it seems that Debian suffers the same issues [3]):

  2) Failure:
test_call_double(DL::TestDL) 
[/builddir/build/BUILD/ruby-2.0.0-r35922/test/dl/test_dl2.rb:90]:
Expected |0.1 - 2.1638932342073e-311| (0.1) to be < 0.001.

I was digging a bit deeper and I identified issue in this part of code 
[2]. I tried a bit to unfold the macros and found, that the issue is 
because of variadic arguments. If the function prototype is declared 
without them (novar.disasm), the test passes, if they are in use 
(variadic.disasm), the test fails. The attached files shows the code 
with partially unfolded marcos and their disassembly. The atof.disasm 
contains the disassembly of the atof call if it might be of help.

I am not sure if it might be compiler bug (GCC 4.7) or if it should be 
fixed in Ruby. Any help appreciated


[1] 
http://arm.koji.fedoraproject.org/koji/getfile?tas...
[2] https://github.com/ruby/ruby/blob/v1_9_3_195/ext/d...
[3] 
https://buildd.debian.org/status/fetch.php?pkg=rub...
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-06-14 11:20
(Received via mailing list)
Issue #6592 has been updated by kosaki (Motohiro KOSAKI).


Please confirm you are surely using fiddle (instead of plain DL). ext/dl 
is broken when the abi require proper function prototype for  variadic 
arguments (e.g. x86_64).


----------------------------------------
Bug #6592: test_call_double(DL::TestDL) fails on ARM HardFP
https://bugs.ruby-lang.org/issues/6592#change-27249

Author: vo.x (Vit Ondruch)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-06-05 trunk 35922) [armv7hl-linux]


Hi,

I am observing following test suite error on armv7hl Fedora 17 [1] (but 
it seems that Debian suffers the same issues [3]):

  2) Failure:
test_call_double(DL::TestDL) 
[/builddir/build/BUILD/ruby-2.0.0-r35922/test/dl/test_dl2.rb:90]:
Expected |0.1 - 2.1638932342073e-311| (0.1) to be < 0.001.

I was digging a bit deeper and I identified issue in this part of code 
[2]. I tried a bit to unfold the macros and found, that the issue is 
because of variadic arguments. If the function prototype is declared 
without them (novar.disasm), the test passes, if they are in use 
(variadic.disasm), the test fails. The attached files shows the code 
with partially unfolded marcos and their disassembly. The atof.disasm 
contains the disassembly of the atof call if it might be of help.

I am not sure if it might be compiler bug (GCC 4.7) or if it should be 
fixed in Ruby. Any help appreciated


[1] 
http://arm.koji.fedoraproject.org/koji/getfile?tas...
[2] https://github.com/ruby/ruby/blob/v1_9_3_195/ext/d...
[3] 
https://buildd.debian.org/status/fetch.php?pkg=rub...
Posted by Vít Ondruch (vo_x)
on 2012-06-14 14:55
(Received via mailing list)
Issue #6592 has been updated by vo.x (Vit Ondruch).


No I am not using Fiddle.

Better to say, it is not up to me what I use. The test is written in 
such way that it is using DL no matter if libffi is present and if 
Fiddle might be used.

This is the callstack using GitHub ;)

https://github.com/ruby/ruby/blob/trunk/ext/dl/cfunc.c#L340
https://github.com/ruby/ruby/blob/trunk/ext/dl/lib...
https://github.com/ruby/ruby/blob/trunk/test/dl/te...

----------------------------------------
Bug #6592: test_call_double(DL::TestDL) fails on ARM HardFP
https://bugs.ruby-lang.org/issues/6592#change-27250

Author: vo.x (Vit Ondruch)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-06-05 trunk 35922) [armv7hl-linux]


Hi,

I am observing following test suite error on armv7hl Fedora 17 [1] (but 
it seems that Debian suffers the same issues [3]):

  2) Failure:
test_call_double(DL::TestDL) 
[/builddir/build/BUILD/ruby-2.0.0-r35922/test/dl/test_dl2.rb:90]:
Expected |0.1 - 2.1638932342073e-311| (0.1) to be < 0.001.

I was digging a bit deeper and I identified issue in this part of code 
[2]. I tried a bit to unfold the macros and found, that the issue is 
because of variadic arguments. If the function prototype is declared 
without them (novar.disasm), the test passes, if they are in use 
(variadic.disasm), the test fails. The attached files shows the code 
with partially unfolded marcos and their disassembly. The atof.disasm 
contains the disassembly of the atof call if it might be of help.

I am not sure if it might be compiler bug (GCC 4.7) or if it should be 
fixed in Ruby. Any help appreciated


[1] 
http://arm.koji.fedoraproject.org/koji/getfile?tas...
[2] https://github.com/ruby/ruby/blob/v1_9_3_195/ext/d...
[3] 
https://buildd.debian.org/status/fetch.php?pkg=rub...
Posted by Aaron Patterson (tenderlove)
on 2012-06-20 18:42
(Received via mailing list)
On Thu, Jun 14, 2012 at 09:54:41PM +0900, vo.x (Vit Ondruch) wrote:
>
> Issue #6592 has been updated by vo.x (Vit Ondruch).
>
>
> No I am not using Fiddle.
>
> Better to say, it is not up to me what I use. The test is written in such way 
that it is using DL no matter if libffi is present and if Fiddle might be used.

I think we need to delete the CFunc code.  The problem with that class
is we cannot tell the return type, so it's impossible to set up a fiddle
wrapper without using DL::CFunc in conjunction with DL::Function.

I'll port these tests to Fiddle in preparation for rm'ing the dl
implementation.

> This is the callstack using GitHub ;)
>
> https://github.com/ruby/ruby/blob/trunk/ext/dl/cfunc.c#L340
> https://github.com/ruby/ruby/blob/trunk/ext/dl/lib...
> https://github.com/ruby/ruby/blob/trunk/test/dl/te...

Thank you! :-)
Posted by Vít Ondruch (vo_x)
on 2012-06-21 07:41
(Received via mailing list)
Issue #6592 has been updated by vo.x (Vit Ondruch).


>  I think we need to delete the CFunc code.  The problem with that class
>  is we cannot tell the return type, so it's impossible to set up a fiddle
>  wrapper without using DL::CFunc in conjunction with DL::Function.
>
>  I'll port these tests to Fiddle in preparation for rm'ing the dl
>  implementation.

In other words, DL will be removed in 2.0, but this leaves 1.9.3 on ARM 
with broken functionality? It would be nice to document it somewhere at 
least, if this is the case. Thank you.
----------------------------------------
Bug #6592: test_call_double(DL::TestDL) fails on ARM HardFP
https://bugs.ruby-lang.org/issues/6592#change-27329

Author: vo.x (Vit Ondruch)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-06-05 trunk 35922) [armv7hl-linux]


Hi,

I am observing following test suite error on armv7hl Fedora 17 [1] (but 
it seems that Debian suffers the same issues [3]):

  2) Failure:
test_call_double(DL::TestDL) 
[/builddir/build/BUILD/ruby-2.0.0-r35922/test/dl/test_dl2.rb:90]:
Expected |0.1 - 2.1638932342073e-311| (0.1) to be < 0.001.

I was digging a bit deeper and I identified issue in this part of code 
[2]. I tried a bit to unfold the macros and found, that the issue is 
because of variadic arguments. If the function prototype is declared 
without them (novar.disasm), the test passes, if they are in use 
(variadic.disasm), the test fails. The attached files shows the code 
with partially unfolded marcos and their disassembly. The atof.disasm 
contains the disassembly of the atof call if it might be of help.

I am not sure if it might be compiler bug (GCC 4.7) or if it should be 
fixed in Ruby. Any help appreciated


[1] 
http://arm.koji.fedoraproject.org/koji/getfile?tas...
[2] https://github.com/ruby/ruby/blob/v1_9_3_195/ext/d...
[3] 
https://buildd.debian.org/status/fetch.php?pkg=rub...
Posted by Aaron Patterson (tenderlove)
on 2012-06-21 19:07
(Received via mailing list)
On Thu, Jun 21, 2012 at 02:41:10PM +0900, vo.x (Vit Ondruch) wrote:
>
> In other words, DL will be removed in 2.0, but this leaves 1.9.3 on ARM with 
broken functionality? It would be nice to document it somewhere at least, if this 
is the case. Thank you.

Not so much broken, as replaced with Fiddle.  I don't think the CFunc
object is intended to be used directly (I couldn't find any usage in the
wild).  But yes, if you're using CFunc directly, it will break. :(
Posted by drbrain (Eric Hodel) (Guest)
on 2012-06-22 02:35
(Received via mailing list)
Issue #6592 has been updated by drbrain (Eric Hodel).

Category set to ext
Assignee set to tenderlovemaking (Aaron Patterson)
Target version set to 2.0.0


----------------------------------------
Bug #6592: test_call_double(DL::TestDL) fails on ARM HardFP
https://bugs.ruby-lang.org/issues/6592#change-27346

Author: vo.x (Vit Ondruch)
Status: Open
Priority: Normal
Assignee: tenderlovemaking (Aaron Patterson)
Category: ext
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-06-05 trunk 35922) [armv7hl-linux]


Hi,

I am observing following test suite error on armv7hl Fedora 17 [1] (but 
it seems that Debian suffers the same issues [3]):

  2) Failure:
test_call_double(DL::TestDL) 
[/builddir/build/BUILD/ruby-2.0.0-r35922/test/dl/test_dl2.rb:90]:
Expected |0.1 - 2.1638932342073e-311| (0.1) to be < 0.001.

I was digging a bit deeper and I identified issue in this part of code 
[2]. I tried a bit to unfold the macros and found, that the issue is 
because of variadic arguments. If the function prototype is declared 
without them (novar.disasm), the test passes, if they are in use 
(variadic.disasm), the test fails. The attached files shows the code 
with partially unfolded marcos and their disassembly. The atof.disasm 
contains the disassembly of the atof call if it might be of help.

I am not sure if it might be compiler bug (GCC 4.7) or if it should be 
fixed in Ruby. Any help appreciated


[1] 
http://arm.koji.fedoraproject.org/koji/getfile?tas...
[2] https://github.com/ruby/ruby/blob/v1_9_3_195/ext/d...
[3] 
https://buildd.debian.org/status/fetch.php?pkg=rub...
Posted by mame (Yusuke Endoh) (Guest)
on 2012-07-14 11:40
(Received via mailing list)
Issue #6592 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned


----------------------------------------
Bug #6592: test_call_double(DL::TestDL) fails on ARM HardFP
https://bugs.ruby-lang.org/issues/6592#change-28088

Author: vo.x (Vit Ondruch)
Status: Assigned
Priority: Normal
Assignee: tenderlovemaking (Aaron Patterson)
Category: ext
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-06-05 trunk 35922) [armv7hl-linux]


Hi,

I am observing following test suite error on armv7hl Fedora 17 [1] (but 
it seems that Debian suffers the same issues [3]):

  2) Failure:
test_call_double(DL::TestDL) 
[/builddir/build/BUILD/ruby-2.0.0-r35922/test/dl/test_dl2.rb:90]:
Expected |0.1 - 2.1638932342073e-311| (0.1) to be < 0.001.

I was digging a bit deeper and I identified issue in this part of code 
[2]. I tried a bit to unfold the macros and found, that the issue is 
because of variadic arguments. If the function prototype is declared 
without them (novar.disasm), the test passes, if they are in use 
(variadic.disasm), the test fails. The attached files shows the code 
with partially unfolded marcos and their disassembly. The atof.disasm 
contains the disassembly of the atof call if it might be of help.

I am not sure if it might be compiler bug (GCC 4.7) or if it should be 
fixed in Ruby. Any help appreciated


[1] 
http://arm.koji.fedoraproject.org/koji/getfile?tas...
[2] https://github.com/ruby/ruby/blob/v1_9_3_195/ext/d...
[3] 
https://buildd.debian.org/status/fetch.php?pkg=rub...
Posted by mame (Yusuke Endoh) (Guest)
on 2013-02-18 13:53
(Received via mailing list)
Issue #6592 has been updated by mame (Yusuke Endoh).

Target version changed from 2.0.0 to next minor


----------------------------------------
Bug #6592: test_call_double(DL::TestDL) fails on ARM HardFP
https://bugs.ruby-lang.org/issues/6592#change-36524

Author: vo.x (Vit Ondruch)
Status: Assigned
Priority: Normal
Assignee: tenderlovemaking (Aaron Patterson)
Category: ext
Target version: next minor
ruby -v: ruby 2.0.0dev (2012-06-05 trunk 35922) [armv7hl-linux]


Hi,

I am observing following test suite error on armv7hl Fedora 17 [1] (but 
it seems that Debian suffers the same issues [3]):

  2) Failure:
test_call_double(DL::TestDL) 
[/builddir/build/BUILD/ruby-2.0.0-r35922/test/dl/test_dl2.rb:90]:
Expected |0.1 - 2.1638932342073e-311| (0.1) to be < 0.001.

I was digging a bit deeper and I identified issue in this part of code 
[2]. I tried a bit to unfold the macros and found, that the issue is 
because of variadic arguments. If the function prototype is declared 
without them (novar.disasm), the test passes, if they are in use 
(variadic.disasm), the test fails. The attached files shows the code 
with partially unfolded marcos and their disassembly. The atof.disasm 
contains the disassembly of the atof call if it might be of help.

I am not sure if it might be compiler bug (GCC 4.7) or if it should be 
fixed in Ruby. Any help appreciated


[1] 
http://arm.koji.fedoraproject.org/koji/getfile?tas...
[2] https://github.com/ruby/ruby/blob/v1_9_3_195/ext/d...
[3] 
https://buildd.debian.org/status/fetch.php?pkg=rub...
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.