www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.ldc - Test results for D on Android/ARM

reply Joakim <dlang joakim.fea.st> writes:
I've been running the druntime and phobos tests from the master 
2.068 branch on various Android devices.  Please try out the 
Android test runners I just made available and report your own 
results in this thread:

https://github.com/joakim-noah/android/releases/tag/runners

Some output is expected and doesn't need to be reported, while 
any other deviations should be reported.  Please report the 
Android version, found in Settings->About Device->Android 
Version; the manufacturer; the chipset, which can be found on 
device databases like gsmarena; and which runners you ran.  If 
you google your device's name, usually the first link is the 
gsmarena entry.  For example, the Samsung Galaxy S6 uses the 
Exynos 7420:

http://www.gsmarena.com/samsung_galaxy_s6-6849.php

I'm using this ldc forum for this device reporting because it 
doesn't require any registration, unlike the wiki or github.  
I'll collect all the results and put them on the wiki later.

All source is available to build ldc and the test runner 
yourself, only missing the build script I used for the apk 
version of the test runner.  I'll write up the build process on 
the wiki and push that last script into CMake next.

Expected output:

- Bionic didn't support hex format for floating point, either for 
literals or output, until Android 5.0.  As a result, I skip such 
tests in std.conv and std.format if they fail.  The command-line 
test runner will note that those tests were skipped on pre-5.0 
Android: that's expected and only needs to be reported if it 
_doesn't_ happen on pre-5.0 Android.

My results:

- Android 5.1.1, Samsung, Exynos 5250: All tests pass, both 
command-line and apk.

- Android 5.0.2, Samsung, Exynos 5420: Std.stdio and std.socket 
hang in both command-line and apk, all other tests pass.

- Android 4.2.2, HTC, Tegra 3 AP37: All tests pass in the apk.  
The command-line runner keeps segfaulting consistently at the 
same spots, not sure why since the apk runs fine, could be some 
aggressive process killing since this device has only 1 GB of 
RAM.  If I split up test.list to run only the druntime tests, the 
phobos tests before std.file, then the rest, ie three different 
runs, everything passes.

- Android 4.4.4, Sony, Snapdragon 801: All tests pass, both 
command-line and apk.

- Android 4.4.2, Samsung, Exynos 4412: All tests pass, both 
command-line and apk.

- Android 5.0.2, Samsung, Snapdragon 410: Std.stdio and 
std.socket hang in both command-line and apk, all other tests 
pass.
Oct 31 2015
next sibling parent reply Brad Anderson <eco gnuk.net> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 I've been running the druntime and phobos tests from the master 
 2.068 branch on various Android devices.  Please try out the 
 Android test runners I just made available and report your own 
 results in this thread:
My LG G2 results here probably aren't as useful because it's for some random cyanogen nightly but here they are anyway: Android 5.0.2 (CyanogenMod 12-20150304-NIGHTLY), LG, Qualcomm MSM8974 Snapdragon 800: Std.stdio and std.socket hang in apk, all other tests pass. Very exciting stuff.
Oct 31 2015
parent Joakim <dlang joakim.fea.st> writes:
Thanks for all the info everyone, keep it coming.

On Sunday, 1 November 2015 at 06:33:46 UTC, Brad Anderson wrote:
 My LG G2 results here probably aren't as useful because it's 
 for some random cyanogen nightly but here they are anyway:

 Android 5.0.2 (CyanogenMod 12-20150304-NIGHTLY), LG, Qualcomm 
 MSM8974 Snapdragon 800:  Std.stdio and std.socket hang in apk, 
 all other tests pass.

 Very exciting stuff.
No, it's useful. I wondered if the std.stdio and std.socket hangs might be Samsung-specific, as I only tested their 5.0 devices, but your and others' consistent reproductions show that they hit all 5.0 devices exclusively. I'll look into the reasons. On Sunday, 1 November 2015 at 10:15:18 UTC, rsw0x wrote:
 On Sunday, 1 November 2015 at 10:08:56 UTC, rsw0x wrote:
 On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 ...
original Nexus 5(LG-D820,) Android Marshmallow(6.0)
sigh, knew I forgot to paste something. chipset is a snapdragon 800.
No problem, the Nexus 5 was only ever equipped with that chip, so I could have figured it out. :) You're probably the first person to ever run D code on an Android 6.0 device, good to see that there's only one issue. On Monday, 2 November 2015 at 08:52:44 UTC, Thomas Brix Larsen wrote:
 On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 ...
- Android 4.3, TomTom Bridge, Snapdragon 400: All tests pass, both command-line and apk.
Never heard of this device, and I consider myself a bit of a mobile buff. I just had to look it up, a GPS tablet for businesses.
Nov 02 2015
prev sibling next sibling parent reply rsw0x <anonymous anonymous.com> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 ...
0.000s PASS release32 core.atomic 0.024s PASS release32 core.bitop 0.000s PASS release32 core.checkedint 0.005s PASS release32 core.memory 0.000s PASS release32 core.exception 0.000s PASS release32 core.math 0.008s PASS release32 core.demangle 0.176s PASS release32 core.time 0.185s PASS release32 core.thread 0.000s PASS release32 core.internal.convert 0.000s PASS release32 core.internal.hash 0.000s PASS release32 core.sync.config 0.008s PASS release32 core.sync.mutex 0.023s PASS release32 core.sync.condition 0.001s PASS release32 core.sync.barrier 0.018s PASS release32 core.sync.rwmutex 0.000s PASS release32 core.sys.posix.sys.select 0.001s PASS release32 object 0.000s PASS release32 rt.aaA 0.000s PASS release32 rt.arraybyte 0.000s PASS release32 rt.arrayassign 0.000s PASS release32 rt.cover 0.000s PASS release32 rt.arraycast 0.000s PASS release32 rt.minfo 0.001s PASS release32 rt.arraydouble 0.000s PASS release32 rt.qsort 0.000s PASS release32 rt.typeinfo.ti_Aint 0.000s PASS release32 rt.adi 0.008s PASS release32 rt.lifetime 0.000s PASS release32 rt.monitor_ 0.000s PASS release32 rt.arrayreal 0.000s PASS release32 rt.arrayfloat 0.000s PASS release32 rt.util.string 0.000s PASS release32 rt.util.utf 0.000s PASS release32 rt.util.hash 0.088s PASS release32 rt.util.container.treap 0.000s PASS release32 rt.util.container.hashtab 0.000s PASS release32 rt.util.container.array 0.000s PASS release32 rt.util.typeinfo 0.000s PASS release32 rt.arrayshort 0.000s PASS release32 rt.aApply 0.000s PASS release32 rt.switch_ 0.001s PASS release32 rt.arrayint 0.000s PASS release32 rt.aApplyR 0.000s PASS release32 gc.config 0.000s PASS release32 gc.gc 0.000s PASS release32 gc.bits 0.000s PASS release32 gc.pooltable 0.000s PASS release32 std.typetuple 0.015s PASS release32 std.format 0.029s PASS release32 std.conv 7.895s PASS release32 std.random 0.222s PASS release32 std.uni 0.005s PASS release32 std.encoding 0.004s PASS release32 std.zip 0.029s PASS release32 std.variant 0.003s PASS release32 std.mmfile 0.016s PASS release32 std.path 1.359s PASS release32 std.process 6.085s PASS release32 std.datetime 0.000s PASS release32 std.cstream 0.000s PASS release32 std.meta No service for epmap. 3.128s PASS release32 std.socket 0.000s PASS release32 std.signals 0.000s PASS release32 std.typelist 0.000s PASS release32 std.outbuffer 0.023s PASS release32 std.stdio 0.001s PASS release32 std.csv 0.001s PASS release32 std.xml 0.000s PASS release32 std.mathspecial 0.002s PASS release32 std.exception 0.001s PASS release32 std.math 0.007s PASS release32 std.uuid 0.064s PASS release32 std.string 0.000s PASS release32 std.traits 0.001s PASS release32 std.ascii 0.000s PASS release32 std.complex 0.001s PASS release32 std.functional 0.003s PASS release32 std.typecons 0.003s PASS release32 std.getopt 0.005s PASS release32 std.utf 0.559s PASS release32 std.uri 0.007s PASS release32 std.stream 0.013s PASS release32 std.concurrency 0.007s PASS release32 std.bitmanip 0.020s PASS release32 std.array 0.006s PASS release32 std.bigint 0.000s PASS release32 std.base64 0.053s PASS release32 std.zlib 2.291s PASS release32 std.parallelism 0.001s PASS release32 std.json 0.001s PASS release32 std.numeric ****** FAIL release32 std.file core.exception.AssertError /home/-/ldc/runtime/phobos/std/file.d(1348): Assertion failure 0.027s PASS release32 std.algorithm.searching 0.016s PASS release32 std.algorithm.setops 0.018s PASS release32 std.algorithm.mutation 0.010s PASS release32 std.algorithm.sorting 0.002s PASS release32 std.algorithm.comparison 0.012s PASS release32 std.algorithm.iteration 0.000s PASS release32 std.container 0.002s PASS release32 std.container.util 0.000s PASS release32 std.container.binaryheap 0.023s PASS release32 std.container.rbtree 0.001s PASS release32 std.container.array 0.000s PASS release32 std.container.slist 0.000s PASS release32 std.container.dlist 0.052s PASS release32 std.digest.md 0.030s PASS release32 std.digest.crc 0.063s PASS release32 std.digest.ripemd 0.831s PASS release32 std.digest.sha 0.070s PASS release32 std.digest.digest 0.000s PASS release32 std.experimental.logger.nulllogger 0.183s PASS release32 std.experimental.logger.core 0.000s PASS release32 std.experimental.logger.filelogger 0.000s PASS release32 std.experimental.logger.multilogger 0.001s PASS release32 std.net.curl 0.017s PASS release32 std.net.isemail 0.013s PASS release32 std.range 0.004s PASS release32 std.range.primitives 0.000s PASS release32 std.range.interfaces 0.010s PASS release32 std.regex 0.000s PASS release32 std.regex.internal.ir 0.000s PASS release32 std.regex.internal.backtracking 0.006s PASS release32 std.regex.internal.generator 0.002s PASS release32 std.regex.internal.parser 0.333s PASS release32 std.regex.internal.tests 0.000s PASS release32 std.regex.internal.kickstart 0.000s PASS release32 std.internal.cstring 0.000s PASS release32 std.internal.scopebuffer 0.000s PASS release32 std.internal.math.biguintcore 0.000s PASS release32 std.internal.math.biguintnoasm 0.000s PASS release32 std.internal.math.errorfunction 0.000s PASS release32 std.internal.math.gammafunction original Nexus 5(LG-D820,) Android Marshmallow(6.0)
Nov 01 2015
parent rsw0x <anonymous anonymous.com> writes:
On Sunday, 1 November 2015 at 10:08:56 UTC, rsw0x wrote:
 On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 ...
original Nexus 5(LG-D820,) Android Marshmallow(6.0)
sigh, knew I forgot to paste something. chipset is a snapdragon 800.
Nov 01 2015
prev sibling next sibling parent John Colvin <john.loughran.colvin gmail.com> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 I've been running the druntime and phobos tests from the master 
 2.068 branch on various Android devices.  Please try out the 
 Android test runners I just made available and report your own 
 results in this thread:

 [...]
Android 5.1, Motorola, Snapdragon 400: All tests pass with both command-line and apk
Nov 01 2015
prev sibling next sibling parent Elie Morisse <syniurge gmail.com> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 I've been running the druntime and phobos tests from the master 
 2.068 branch on various Android devices.  Please try out the 
 Android test runners I just made available and report your own 
 results in this thread:
Android 5.1.1, nVidia Shield, Tegra K1: All tests pass, apk. Android 5.0, LG G3, Snapdragon 801: Apk and command-line hang, one time after core.time, and the other times after std.meta. After deletion of std.socket it hanged at std.stdio, and once these two were removed all other tests pass.
Nov 01 2015
prev sibling next sibling parent Thomas Brix Larsen <brix brix-verden.dk> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 ...
- Android 4.3, TomTom Bridge, Snapdragon 400: All tests pass, both command-line and apk.
Nov 02 2015
prev sibling next sibling parent Radu <radu void.null> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 I've been running the druntime and phobos tests from the master 
 2.068 branch on various Android devices.  Please try out the 
 Android test runners I just made available and report your own 
 results in this thread:

 [...]
Android 5.1.1, Samsung Galaxy S6 Edge (Exynos 7420), apk all tests pass. Awesome job!
Nov 02 2015
prev sibling next sibling parent reply Nick Sabalausky <a a.a> writes:
Ran the full test suite, not all passed.

Android: v4.1.2
Device: SCH-I535 (Samsung Galaxy S3 Verizon)
Chipset: Snapdragon S4 Plus

It is rooted, FWIW.

===================
0.001s PASS core.atomic
0.090s PASS core.bitop
0.000s PASS core.checkedint
0.009s PASS core.memory
0.000s PASS core.exception
0.000s PASS core.math
0.003s PASS core.demangle
0.734s PASS core.time
0.636s PASS core.thread
0.000s PASS core.internal.convert
0.018s PASS core.internal.hash
0.000s PASS core.sync.config
0.011s PASS core.sync.mutex
0.022s PASS core.sync.condition
0.002s PASS core.sync.barrier
0.013s PASS core.sync.rwmutex
0.000s PASS core.sys.posix.sys.select
0.306s PASS object
0.000s PASS rt.aaA
0.001s PASS rt.arraybyte
0.000s PASS rt.arrayassign
0.000s PASS rt.cover
0.000s PASS rt.arraycast
0.000s PASS rt.minfo
0.003s PASS rt.arraydouble
0.000s PASS rt.qsort
0.000s PASS rt.typeinfo.ti_Aint
0.003s PASS rt.adi
0.035s PASS rt.lifetime
0.000s PASS rt.monitor_
0.000s PASS rt.arrayreal
0.001s PASS rt.arrayfloat
0.000s PASS rt.util.string
0.009s PASS rt.util.utf
0.000s PASS rt.util.hash
0.299s PASS rt.util.container.treap
0.000s PASS rt.util.container.hashtab
0.000s PASS rt.util.container.array
0.000s PASS rt.util.typeinfo
0.001s PASS rt.arrayshort
0.000s PASS rt.aApply
0.000s PASS rt.switch_
0.004s PASS rt.arrayint
0.000s PASS rt.aApplyR
0.000s PASS gc.config
0.000s PASS gc.gc
0.000s PASS gc.bits
0.000s PASS gc.pooltable
0.000s PASS std.typetuple
0.057s PASS std.format
0.349s PASS std.conv
39.613s PASS std.random
0.697s PASS std.uni
0.018s PASS std.encoding
0.030s PASS std.zip
0.043s PASS std.variant
****** FAIL std.mmfile
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
****** FAIL std.path
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
****** FAIL std.process
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
15.633s PASS std.datetime
****** FAIL std.cstream
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
0.002s PASS std.meta
****** FAIL std.socket
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
0.000s PASS std.signals
0.000s PASS std.typelist
0.000s PASS std.outbuffer
****** FAIL std.stdio
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
0.017s PASS std.csv
0.011s PASS std.xml
0.003s PASS std.mathspecial
0.014s PASS std.exception
0.005s PASS std.math
0.049s PASS std.uuid
0.155s PASS std.string
0.002s PASS std.traits
0.003s PASS std.ascii
0.000s PASS std.complex
0.004s PASS std.functional
0.015s PASS std.typecons
0.006s PASS std.getopt
0.032s PASS std.utf
1.287s PASS std.uri
****** FAIL std.stream
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
0.023s PASS std.concurrency
0.010s PASS std.bitmanip
0.046s PASS std.array
0.017s PASS std.bigint
****** FAIL std.base64
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
0.116s PASS std.zlib
****** FAIL std.parallelism
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
0.004s PASS std.json
0.003s PASS std.numeric
****** FAIL std.file
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
0.057s PASS std.algorithm.searching
0.016s PASS std.algorithm.setops
0.004s PASS std.algorithm.mutation
0.022s PASS std.algorithm.sorting
0.004s PASS std.algorithm.comparison
0.025s PASS std.algorithm.iteration
0.000s PASS std.container
0.034s PASS std.container.util
0.000s PASS std.container.binaryheap
0.059s PASS std.container.rbtree
0.004s PASS std.container.array
0.000s PASS std.container.slist
0.000s PASS std.container.dlist
0.117s PASS std.digest.md
0.048s PASS std.digest.crc
0.137s PASS std.digest.ripemd
2.660s PASS std.digest.sha
0.211s PASS std.digest.digest
0.000s PASS std.experimental.logger.nulllogger
****** FAIL std.experimental.logger.core
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
****** FAIL std.experimental.logger.filelogger
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
****** FAIL std.experimental.logger.multilogger
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
0.013s PASS std.net.curl
0.043s PASS std.net.isemail
****** FAIL std.range
std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
0.013s PASS std.range.primitives
0.000s PASS std.range.interfaces
0.031s PASS std.regex
0.000s PASS std.regex.internal.ir
0.000s PASS std.regex.internal.backtracking
0.033s PASS std.regex.internal.generator
0.006s PASS std.regex.internal.parser
0.816s PASS std.regex.internal.tests
0.003s PASS std.regex.internal.kickstart
0.000s PASS std.internal.cstring
0.007s PASS std.internal.scopebuffer
0.000s PASS std.internal.math.biguintcore
0.000s PASS std.internal.math.biguintnoasm
0.000s PASS std.internal.math.errorfunction
0.001s PASS std.internal.math.gammafunction
Nov 02 2015
parent reply Joakim <dlang joakim.fea.st> writes:
On Monday, 2 November 2015 at 13:58:11 UTC, Nick Sabalausky wrote:
 Ran the full test suite, not all passed.

 Android: v4.1.2
 Device: SCH-I535 (Samsung Galaxy S3 Verizon)
 Chipset: Snapdragon S4 Plus

 It is rooted, FWIW.
 ****** FAIL std.mmfile
 std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
 ****** FAIL std.path
 std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
 ****** FAIL std.process
 std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot
get cwd: Invalid argument
 15.633s PASS std.datetime
Hmm, looks like core.sys.posix.unistd.getcwd on your device doesn't accept arguments of null and 0. Since your Android 4.1, ie API level 16, device is the oldest tested so far, perhaps getcwd was implemented differently back then. I'll look at the source for getcwd in bionic from that time and try putting in a workaround. On Monday, 2 November 2015 at 14:35:18 UTC, Vladimir Panteleev wrote:
 On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 For example, the Samsung Galaxy S6 uses the Exynos 7420:

 http://www.gsmarena.com/samsung_galaxy_s6-6849.php
Note that some devices (e.g. the Samsung Galaxy Note series) can use different chipsets depending on the exact model, even though they are marketed under the same product name.
Yeah, I'm aware. I wanted to see if chipsets make a difference, but so far there doesn't appear to be any effect from hardware or manufacturer, only the Android version. I just read that google strongly recommends that manufacturers simply use AOSP for the native APIs, so perhaps only the Android API level matters most of the time.
 All tests pass except std.datetime, both APK and CLI.

 Seems to be failing on these lines:

                     assert(to!string(ourTimeInfo.tm_zone) ==
                                      
 to!string(osTimeInfo.tm_zone));
Yeah, it appears that that time zone string is being set wrongly only on your device. I'm not that familiar with std.datetime: once I wrote some code to extract timezone data from the two different versions of Android's concatenated timezone file, everything just worked. If you don't mind, I'll send you a small binary that'll produce log output that'll help track this issue down.
Nov 02 2015
parent Vladimir Panteleev <thecybershadow.lists gmail.com> writes:
On Monday, 2 November 2015 at 16:27:57 UTC, Joakim wrote:
 All tests pass except std.datetime, both APK and CLI.

 Seems to be failing on these lines:

                     assert(to!string(ourTimeInfo.tm_zone) ==
                                      
 to!string(osTimeInfo.tm_zone));
Yeah, it appears that that time zone string is being set wrongly only on your device. I'm not that familiar with std.datetime: once I wrote some code to extract timezone data from the two different versions of Android's concatenated timezone file, everything just worked. If you don't mind, I'll send you a small binary that'll produce log output that'll help track this issue down.
Sure. How do I see the timezone string that's been set on my device? Maybe this is why my phone is showing the wrong time when roaming :)
Nov 04 2015
prev sibling next sibling parent Vladimir Panteleev <thecybershadow.lists gmail.com> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 For example, the Samsung Galaxy S6 uses the Exynos 7420:

 http://www.gsmarena.com/samsung_galaxy_s6-6849.php
Note that some devices (e.g. the Samsung Galaxy Note series) can use different chipsets depending on the exact model, even though they are marketed under the same product name.
 My results:
Android 4.4.4, Samsung Galaxy Note 4 (SM-N910H), Exynos Octa 5433 1.90GHz, rooted: All tests pass except std.datetime, both APK and CLI. Seems to be failing on these lines: assert(to!string(ourTimeInfo.tm_zone) == to!string(osTimeInfo.tm_zone)); Logs: http://dump.thecybershadow.net/f2f82fd45920cd5adf9e7ae047823447/test-apk.log http://dump.thecybershadow.net/21c26788fcee4cc9d1d6c37eadd5a0ea/test-cli.log (the latter seems to have some additional debug output)
Nov 02 2015
prev sibling next sibling parent reply =?UTF-8?B?VGjDqW8=?= Bueno <munrek gmx.com> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 I've been running the druntime and phobos tests from the master 
 2.068 branch on various Android devices.  Please try out the 
 Android test runners I just made available and report your own 
 results in this thread:
Android 6.0, LG Nexus 5 (D821), Snapdragon 800: All test pass (apk) http://pastebin.com/W6BhWzMM
Nov 02 2015
parent reply Joakim <dlang joakim.fea.st> writes:
On Monday, 2 November 2015 at 21:13:19 UTC, Théo Bueno wrote:
 Android 6.0, LG Nexus 5 (D821), Snapdragon 800: All test pass 
 (apk)
 http://pastebin.com/W6BhWzMM
That's interesting that all the tests pass in the apk, but rsw0x had one test fail on the command-line on the same device. Usually it's the other way around, the apk is more restrictive. On Wednesday, 4 November 2015 at 17:51:29 UTC, Austin G wrote:
 LG G4
 Android 5.1
 Snapdragon 808

 Hung on:
 core.thread
 std.parallelism
 std.container.rbtree
 std.experimental.logger.core
 std.net.isemail
 std.range.primitves
 std.regex
 std.regex.internal.thompson
 std.regex.internal.parser
 std.regex.internal.tests
 std.regex.internal.kickstart

 All other tests passed.
That's strange, others have reported no problems with Android 5.1. Did all these tests hang or simply fail? When I say hang, I mean the test runner keeps running but nothing happens, so you have to close or kill it. Whereas if a test asserts, it'll just say that module failed and move on to the next one. Could be some issue related to threading, given that core.thread is the only druntime module on your list. The only other cause I can think of is that yours is one of the few ARMv8 chips tested so far, but the others haven't had this problem. Can you try running the other test runner, the command-line binary if you tried the apk so far, and see if you can reproduce or get some error output? Thanks for any feedback. On Wednesday, 4 November 2015 at 23:38:56 UTC, TheFlyingFiddle wrote:
 On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:

Android 4.1.2, HTC 500 The following modules fail: std.mmfile std.path std.process std.cstream std.socket std.stdio std.stream std.base64 std.parallelism std.file std.experimental.logger.core std.experimental.logger.filelogger std.experimental.logger.multilogger std.range All modules fail with the same error: std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot get cwd: Invalid argument
Thanks, this confirms the getcwd issue Nick reported above, on what is presumably an unrooted phone. I'll try adding a workaround for this and let you two know once I make available an updated test runner.
Nov 04 2015
next sibling parent TheFlyingFiddle <borin.lukas gmail.com> writes:
On Thursday, 5 November 2015 at 05:29:00 UTC, Joakim wrote:
 On Monday, 2 November 2015 at 21:13:19 UTC, Théo Bueno wrote:
 Thanks, this confirms the getcwd issue Nick reported above, on 
 what is presumably an unrooted phone.  I'll try adding a 
 workaround for this and let you two know once I make available 
 an updated test runner.
It is an unrooted phone.
Nov 05 2015
prev sibling parent reply Austin G <mail mail.com> writes:
On Thursday, 5 November 2015 at 05:29:00 UTC, Joakim wrote:
 On Wednesday, 4 November 2015 at 17:51:29 UTC, Austin G wrote:
 LG G4
 Android 5.1
 Snapdragon 808
 [snip]
That's strange, others have reported no problems with Android 5.1. Did all these tests hang or simply fail? When I say hang, I mean the test runner keeps running but nothing happens, so you have to close or kill it. Whereas if a test asserts, it'll just say that module failed and move on to the next one. Could be some issue related to threading, given that core.thread is the only druntime module on your list. The only other cause I can think of is that yours is one of the few ARMv8 chips tested so far, but the others haven't had this problem. Can you try running the other test runner, the command-line binary if you tried the apk so far, and see if you can reproduce or get some error output? Thanks for any feedback.
Definitely hung, re-ran the test for each hung module to confirm it was actually hanging. I will re-run with the command line binary as soon as I can get Android to cooperate (not rooted).
Nov 07 2015
parent Joakim <dlang joakim.fea.st> writes:
On Saturday, 7 November 2015 at 18:04:09 UTC, Austin G wrote:
 Definitely hung, re-ran the test for each hung module to 
 confirm it was actually hanging. I will re-run with the command 
 line binary as soon as I can get Android to cooperate (not 
 rooted).
Root is not necessary. Simply download the command-line test runner to your device, install a terminal app, type 'cd' at the command-line to go to the terminal app's local folder, then copy the test-runner and test.list to that local folder. You should be able to run it there, as apps can run executables from their local folder. Alternately, you can install an SSH server app, as discussed on the wiki: http://wiki.dlang.org/Build_LDC_for_Android#Run_the_druntime_and_phobos_unit_tests
Nov 07 2015
prev sibling next sibling parent reply Adrian Matoga <epi atari8.info> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 I've been running the druntime and phobos tests from the master 
 2.068 branch on various Android devices.  Please try out the 
 Android test runners I just made available and report your own 
 results in this thread:

 https://github.com/joakim-noah/android/releases/tag/runners

 Some output is expected and doesn't need to be reported, while 
 any other deviations should be reported.  Please report the 
 Android version, found in Settings->About Device->Android 
 Version; the manufacturer; the chipset, which can be found on 
 device databases like gsmarena; and which runners you ran.  If 
 you google your device's name, usually the first link is the 
 gsmarena entry.  For example, the Samsung Galaxy S6 uses the 
 Exynos 7420:
5.0.1, Samsung Galaxy S4 (I9505), Snapdragon 600 Tested with apk: std.socket and std.stdio seem to hang, after removing them all tests pass.
Nov 03 2015
parent Austin G <email email.com> writes:
LG G4
Android 5.1
Snapdragon 808

Hung on:
core.thread
std.parallelism
std.container.rbtree
std.experimental.logger.core
std.net.isemail
std.range.primitves
std.regex
std.regex.internal.thompson
std.regex.internal.parser
std.regex.internal.tests
std.regex.internal.kickstart

All other tests passed.
Nov 04 2015
prev sibling next sibling parent TheFlyingFiddle <borin.lukas gmail.com> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:

Android 4.1.2, HTC 500 The following modules fail: std.mmfile std.path std.process std.cstream std.socket std.stdio std.stream std.base64 std.parallelism std.file std.experimental.logger.core std.experimental.logger.filelogger std.experimental.logger.multilogger std.range All modules fail with the same error: std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1802): cannot get cwd: Invalid argument
Nov 04 2015
prev sibling next sibling parent Paulo Pinto <pjmlp progtools.org> writes:
Android 4.4 S4 Mini - All tests pass with the APK.

Android 4.3 S3      - All tests pass with the APK
Nov 05 2015
prev sibling next sibling parent Kapps <opantm2+spam gmail.com> writes:
Using the APK on a Note 4 with Snapdragon 805 running CyanogenMod 
12 Nightly (5.1.1, build 20151015), all tests passed(!) and 
nothing hung. Awesome to see this.
Nov 05 2015
prev sibling next sibling parent Yazan D <invalid email.com> writes:
Tested on Samsung Galaxy Grand I9082, Android 4.2.2, Cortex A9 using the 
APK.

All tests pass except for one in std.datetime due to a wrong test with my 
timezone (https://issues.dlang.org/show_bug.cgi?id=9488) (happens on 
desktop too).

Great work!

0.000s PASS core.atomic
0.031s PASS core.bitop
0.000s PASS core.checkedint
0.005s PASS core.memory
0.000s PASS core.exception
0.000s PASS core.math
0.015s PASS core.demangle
0.521s PASS core.time
0.289s PASS core.thread
0.000s PASS core.internal.convert
0.000s PASS core.internal.hash
0.000s PASS core.sync.config
0.003s PASS core.sync.mutex
0.026s PASS core.sync.condition
0.014s PASS core.sync.barrier
0.008s PASS core.sync.rwmutex
0.000s PASS core.sys.posix.sys.select
0.001s PASS object
0.000s PASS rt.aaA
0.000s PASS rt.arraybyte
0.000s PASS rt.arrayassign
0.000s PASS rt.cover
0.000s PASS rt.arraycast
0.000s PASS rt.minfo
0.001s PASS rt.arraydouble
0.000s PASS rt.qsort
0.000s PASS rt.typeinfo.ti_Aint
0.000s PASS rt.adi
0.018s PASS rt.lifetime
0.000s PASS rt.monitor_
0.000s PASS rt.arrayreal
0.000s PASS rt.arrayfloat
0.000s PASS rt.util.string
0.001s PASS rt.util.utf
0.000s PASS rt.util.hash
0.179s PASS rt.util.container.treap
0.000s PASS rt.util.container.hashtab
0.000s PASS rt.util.container.array
0.000s PASS rt.util.typeinfo
0.000s PASS rt.arrayshort
0.000s PASS rt.aApply
0.000s PASS rt.switch_
0.002s PASS rt.arrayint
0.000s PASS rt.aApplyR
0.000s PASS gc.config
0.000s PASS gc.gc
0.000s PASS gc.bits
0.000s PASS gc.pooltable
0.000s PASS std.typetuple
0.028s PASS std.format
0.066s PASS std.conv
16.738s PASS std.random
0.424s PASS std.uni
0.008s PASS std.encoding
0.008s PASS std.zip
0.029s PASS std.variant
0.004s PASS std.mmfile
0.029s PASS std.path
1.555s PASS std.process
****** FAIL std.datetime
core.exception.AssertError /home/bert/ldc/runtime/phobos/std/datetime.d
(1457): [1999-Jul-31 01:00:00] [1999-Jul-31 00:00:00]
0.000s PASS std.cstream
0.001s PASS std.meta
4.757s PASS std.socket
0.000s PASS std.signals
0.000s PASS std.typelist
0.001s PASS std.outbuffer
0.502s PASS std.stdio
0.002s PASS std.csv
0.003s PASS std.xml
0.000s PASS std.mathspecial
0.005s PASS std.exception
0.002s PASS std.math
0.023s PASS std.uuid
0.104s PASS std.string
0.001s PASS std.traits
0.002s PASS std.ascii
0.000s PASS std.complex
0.004s PASS std.functional
0.011s PASS std.typecons
0.004s PASS std.getopt
0.014s PASS std.utf
0.912s PASS std.uri
0.021s PASS std.stream
0.036s PASS std.concurrency
0.009s PASS std.bitmanip
0.039s PASS std.array
0.019s PASS std.bigint
0.001s PASS std.base64
0.094s PASS std.zlib
4.073s PASS std.parallelism
0.001s PASS std.json
0.002s PASS std.numeric
0.117s PASS std.file
0.042s PASS std.algorithm.searching
0.017s PASS std.algorithm.setops
0.009s PASS std.algorithm.mutation
0.059s PASS std.algorithm.sorting
0.003s PASS std.algorithm.comparison
0.013s PASS std.algorithm.iteration
0.000s PASS std.container
0.005s PASS std.container.util
0.000s PASS std.container.binaryheap
0.032s PASS std.container.rbtree
0.003s PASS std.container.array
0.000s PASS std.container.slist
0.000s PASS std.container.dlist
0.079s PASS std.digest.md
0.034s PASS std.digest.crc
0.118s PASS std.digest.ripemd
1.190s PASS std.digest.sha
0.155s PASS std.digest.digest
0.000s PASS std.experimental.logger.nulllogger
0.318s PASS std.experimental.logger.core
0.001s PASS std.experimental.logger.filelogger
0.000s PASS std.experimental.logger.multilogger
0.007s PASS std.net.curl
0.028s PASS std.net.isemail
0.017s PASS std.range
0.009s PASS std.range.primitives
0.000s PASS std.range.interfaces
0.015s PASS std.regex
0.000s PASS std.regex.internal.ir
0.000s PASS std.regex.internal.backtracking
0.013s PASS std.regex.internal.generator
0.004s PASS std.regex.internal.parser
0.578s PASS std.regex.internal.tests
0.001s PASS std.regex.internal.kickstart
0.000s PASS std.internal.cstring
0.000s PASS std.internal.scopebuffer
0.000s PASS std.internal.math.biguintcore
0.000s PASS std.internal.math.biguintnoasm
0.000s PASS std.internal.math.errorfunction
0.000s PASS std.internal.math.gammafunction
Nov 06 2015
prev sibling next sibling parent reply Jakob Ovrum <jakobovrum gmail.com> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 I've been running the druntime and phobos tests from the master 
 2.068 branch on various Android devices.  Please try out the 
 Android test runners I just made available and report your own 
 results in this thread:

 https://github.com/joakim-noah/android/releases/tag/runners
Android: 4.4.4 Cyanogenmod: 11-20141115-UNOFFICIAL-M12-ace Model: HTC Desire HD (aka Ace) Chipset: Qualcomm MSM8255 Snapdragon S2 Rooted. With the APK everything passes, but from the command line (as root with SSHDroid) I get: 0.106s PASS release32 core.atomic 0.086s PASS release32 core.bitop 0.000s PASS release32 core.checkedint 0.006s PASS release32 core.memory 0.000s PASS release32 core.exception 0.000s PASS release32 core.math 0.012s PASS release32 core.demangle 1.348s PASS release32 core.time 0.640s PASS release32 core.thread 0.000s PASS release32 core.internal.convert 0.000s PASS release32 core.internal.hash 0.000s PASS release32 core.sync.config 0.008s PASS release32 core.sync.mutex 0.027s PASS release32 core.sync.condition 0.018s PASS release32 core.sync.barrier 0.058s PASS release32 core.sync.rwmutex 0.000s PASS release32 core.sys.posix.sys.select 0.043s PASS release32 object 0.000s PASS release32 rt.aaA 0.000s PASS release32 rt.arraybyte 0.000s PASS release32 rt.arrayassign 0.000s PASS release32 rt.cover 0.000s PASS release32 rt.arraycast 0.000s PASS release32 rt.minfo 0.008s PASS release32 rt.arraydouble 0.000s PASS release32 rt.qsort 0.000s PASS release32 rt.typeinfo.ti_Aint 0.000s PASS release32 rt.adi 0.139s PASS release32 rt.lifetime 0.000s PASS release32 rt.monitor_ 0.000s PASS release32 rt.arrayreal 0.001s PASS release32 rt.arrayfloat 0.000s PASS release32 rt.util.string 0.000s PASS release32 rt.util.utf 0.000s PASS release32 rt.util.hash 0.478s PASS release32 rt.util.container.treap 0.000s PASS release32 rt.util.container.hashtab 0.000s PASS release32 rt.util.container.array 0.000s PASS release32 rt.util.typeinfo 0.006s PASS release32 rt.arrayshort 0.000s PASS release32 rt.aApply 0.000s PASS release32 rt.switch_ 0.003s PASS release32 rt.arrayint 0.000s PASS release32 rt.aApplyR 0.000s PASS release32 gc.config 0.000s PASS release32 gc.gc 0.000s PASS release32 gc.bits 0.000s PASS release32 gc.pooltable 0.000s PASS release32 std.typetuple lower-case nan not supported, trying NaN lower-case nan not supported, trying NaN lower-case nan not supported, trying NaN 0.840s PASS release32 std.format --- std.conv(2891) test fails if Android earlier than 5.0 --- (core.exception.AssertError /home/bert/ldc/runtime/phobos/std/conv.d(2870): Assertion failure) --- std.conv(2899) test fails if Android earlier than 5.0 --- (core.exception.AssertError /home/bert/ldc/runtime/phobos/std/conv.d(2870): Assertion failure) --- std.conv(2907) test fails if Android earlier than 5.0 --- (core.exception.AssertError /home/bert/ldc/runtime/phobos/std/conv.d(2870): Assertion failure) --- std.conv(2915) test fails if Android earlier than 5.0 --- (core.exception.AssertError /home/bert/ldc/runtime/phobos/std/conv.d(2870): Assertion failure) --- std.conv(2923) test fails if Android earlier than 5.0 --- (core.exception.AssertError /home/bert/ldc/runtime/phobos/std/conv.d(2870): Assertion failure) --- std.conv(2931) test fails if Android earlier than 5.0 --- (core.exception.AssertError /home/bert/ldc/runtime/phobos/std/conv.d(2870): Assertion failure) --- std.conv(2936) test fails if Android earlier than 5.0 --- (core.exception.AssertError /home/bert/ldc/runtime/phobos/std/conv.d(2870): Assertion failure) --- std.conv(2941) test fails if Android earlier than 5.0 --- (core.exception.AssertError /home/bert/ldc/runtime/phobos/std/conv.d(2870): Assertion failure) --- std.conv(3002) test fails if Android earlier than 5.0 --- (core.exception.AssertError /home/bert/ldc/runtime/phobos/std/conv.d(2870): Assertion failure) --- std.conv(3003) test fails if Android earlier than 5.0 --- (core.exception.AssertError /home/bert/ldc/runtime/phobos/std/conv.d(2870): Assertion failure) 0.451s PASS release32 std.conv 52.151s PASS release32 std.random 1.572s PASS release32 std.uni 0.034s PASS release32 std.encoding 0.181s PASS release32 std.zip 0.073s PASS release32 std.variant 0.080s PASS release32 std.mmfile 0.106s PASS release32 std.path 4.579s PASS release32 std.process 32.452s PASS release32 std.datetime 0.204s PASS release32 std.cstream 0.002s PASS release32 std.meta No service for epmap. ****** FAIL release32 std.socket std.socket.SocketOSException /home/bert/ldc/runtime/phobos/std/socket.d(2783): Unable to bind socket: Operation not permitted 0.000s PASS release32 std.signals 0.000s PASS release32 std.typelist 0.000s PASS release32 std.outbuffer 1.746s PASS release32 std.stdio 0.198s PASS release32 std.csv 0.002s PASS release32 std.xml 0.065s PASS release32 std.mathspecial 0.115s PASS release32 std.exception 0.002s PASS release32 std.math 0.281s PASS release32 std.uuid 0.288s PASS release32 std.string 0.079s PASS release32 std.traits 0.011s PASS release32 std.ascii 0.004s PASS release32 std.complex 0.045s PASS release32 std.functional 0.127s PASS release32 std.typecons 0.003s PASS release32 std.getopt 0.020s PASS release32 std.utf 4.353s PASS release32 std.uri 0.178s PASS release32 std.stream 0.187s PASS release32 std.concurrency 0.061s PASS release32 std.bitmanip 0.505s PASS release32 std.array 0.199s PASS release32 std.bigint 0.147s PASS release32 std.base64 0.420s PASS release32 std.zlib 10.160s PASS release32 std.parallelism 0.291s PASS release32 std.json 0.001s PASS release32 std.numeric ****** FAIL release32 std.file std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1091): /storage/sdcard0/Download/deleteme.dmd.unittest.pid5691_slink 0.392s PASS release32 std.algorithm.searching 0.033s PASS release32 std.algorithm.setops 0.144s PASS release32 std.algorithm.mutation 0.336s PASS release32 std.algorithm.sorting 0.254s PASS release32 std.algorithm.comparison 0.005s PASS release32 std.algorithm.iteration 0.000s PASS release32 std.container 0.034s PASS release32 std.container.util 0.000s PASS release32 std.container.binaryheap 0.097s PASS release32 std.container.rbtree 0.100s PASS release32 std.container.array 0.000s PASS release32 std.container.slist 0.000s PASS release32 std.container.dlist 0.285s PASS release32 std.digest.md 0.086s PASS release32 std.digest.crc 0.315s PASS release32 std.digest.ripemd 5.517s PASS release32 std.digest.sha 1.078s PASS release32 std.digest.digest 0.000s PASS release32 std.experimental.logger.nulllogger 1.244s PASS release32 std.experimental.logger.core 0.057s PASS release32 std.experimental.logger.filelogger 0.029s PASS release32 std.experimental.logger.multilogger 0.013s PASS release32 std.net.curl 0.484s PASS release32 std.net.isemail 0.077s PASS release32 std.range 0.020s PASS release32 std.range.primitives 0.200s PASS release32 std.range.interfaces 0.072s PASS release32 std.regex 0.000s PASS release32 std.regex.internal.ir 0.000s PASS release32 std.regex.internal.backtracking 0.062s PASS release32 std.regex.internal.generator 0.030s PASS release32 std.regex.internal.parser 1.554s PASS release32 std.regex.internal.tests 0.002s PASS release32 std.regex.internal.kickstart 0.019s PASS release32 std.internal.cstring 0.000s PASS release32 std.internal.scopebuffer 0.001s PASS release32 std.internal.math.biguintcore 0.000s PASS release32 std.internal.math.biguintnoasm 0.000s PASS release32 std.internal.math.errorfunction 0.032s PASS release32 std.internal.math.gammafunction [1] + Segmentation fault ./test-runner There was a significant delay between the pass for std.internal.math.gammafunction and the segfault. How would I go about getting gdb on the device (or is there a different command line debugger I can use)?
Nov 06 2015
parent reply Joakim <dlang joakim.fea.st> writes:
On Friday, 6 November 2015 at 19:23:17 UTC, Jakob Ovrum wrote:
 Android: 4.4.4
 Cyanogenmod: 11-20141115-UNOFFICIAL-M12-ace
 Model: HTC Desire HD (aka Ace)
 Chipset: Qualcomm MSM8255 Snapdragon S2

 Rooted.

 With the APK everything passes, but from the command line (as 
 root with SSHDroid) I get:
 No service for epmap.
 ****** FAIL release32 std.socket
 std.socket.SocketOSException /home/bert/ldc/runtime/phobos/std/socket.d(2783):
Unable to bind socket: Operation not permitted
 ****** FAIL release32 std.file
 std.file.FileException /home/bert/ldc/runtime/phobos/std/file.d(1091):
/storage/sdcard0/Download/deleteme.dmd.unittest.pid5691_slink
They're both related to accessing files, whether a socket file or a symbolic link. Given that they pass from the apk, my guess is that this is related to user/file permissions because you're running as root from the Download directory. Can you try running as a normal user in the local folder for SSHDroid, as described here? http://wiki.dlang.org/Build_LDC_for_Android#Run_the_druntime_and_phobos_unit_tests
 0.032s PASS release32 std.internal.math.gammafunction
 [1] + Segmentation fault   ./test-runner

 There was a significant delay between the pass for 
 std.internal.math.gammafunction and the segfault. How would I 
 go about getting gdb on the device (or is there a different 
 command line debugger I can use)?
With some builds, I used to get an issue with core.thread interacting with the static destructor for std.parallelism, which would cause a segfault on exit. This could be that issue. As for debugging, the NDK comes with an ARM gdb server, found in prebuilt/android-arm/gdbserver/gdbserver, which you can use with their gdb to remotely debug Android apps. Simply copy the ARM gdbserver to the same directory as the command-line test runner on your Android device, then run this command: ./gdbserver :1234 ./test-runner On your development host with the NDK, run this command, where $NDK is the path to your NDK, 1234 is the random port at which the gdb server is listening, and 192.168.35.7 is the IP of your Android device: $NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-l nux-androideabi-gdb -ex "target extended-remote 192.168.35.7:1234" ./path/to/test-runner Make sure you have that last path, a copy of the same test runner on the development host that you're running on the Android device, so gdb can load its symbols. After that, you should be to rerun the test runner as many times as you want, as it's in multi-process mode and you can restart as many processes as you want. When you're done, simply type 'monitor exit' to kill the gdb server remotely before quitting gdb.
Nov 08 2015
next sibling parent FilippoR <ics_fight hotmail.com> writes:
Android 6.0
Nexus 5
Snapdragon 800

All test pass on apk
Nov 09 2015
prev sibling parent reply Jakob Ovrum <jakobovrum gmail.com> writes:
On Sunday, 8 November 2015 at 09:49:18 UTC, Joakim wrote:
 They're both related to accessing files, whether a socket file 
 or a symbolic link.  Given that they pass from the apk, my 
 guess is that this is related to user/file permissions because 
 you're running as root from the Download directory.  Can you 
 try running as a normal user in the local folder for SSHDroid, 
 as described here?

 http://wiki.dlang.org/Build_LDC_for_Android#Run_the_druntime_and_phobos_unit_tests
Running it as root in the home directory (/data/data/berserker.android.apps.sshdroid/home) fixed those errors. I don't know how to add non-root users though.
 With some builds, I used to get an issue with core.thread 
 interacting with the static destructor for std.parallelism, 
 which would cause a segfault on exit.  This could be that issue.

 As for debugging, the NDK comes with an ARM gdb server, found 
 in prebuilt/android-arm/gdbserver/gdbserver, which you can use 
 with their gdb to remotely debug Android apps.
Thanks, I got gdb-server running. In core.thread and some later modules it stops because of SIGUSR1 and SIGUSR2; I guess I should make gdb ignore those? After continuing from all the SIGUSR signals, I get the segfault that occurs after std.internal.math.gammafunction passes: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 22658.22658] 0x4250a364 in core.thread.Thread.getAll() () (gdb) bt #0 0x4250a364 in core.thread.Thread.getAll() () #1 0x43236e04 in std.parallelism._sharedStaticDtor7() () #2 0x42549758 in rt.minfo.rt_moduleDtor() () #3 0x42557e70 in rt_term () #4 0x42558120 in _d_run_main () #5 0x43e85418 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) info threads Id Target Id Frame * 1 Thread 22658.22658 0x4250a364 in core.thread.Thread.getAll() () I'm guessing this is the same issue you mentioned.
Nov 11 2015
parent Joakim <dlang joakim.fea.st> writes:
On Thursday, 12 November 2015 at 03:46:07 UTC, Jakob Ovrum wrote:
 On Sunday, 8 November 2015 at 09:49:18 UTC, Joakim wrote:
 They're both related to accessing files, whether a socket file 
 or a symbolic link.  Given that they pass from the apk, my 
 guess is that this is related to user/file permissions because 
 you're running as root from the Download directory.  Can you 
 try running as a normal user in the local folder for SSHDroid, 
 as described here?

 http://wiki.dlang.org/Build_LDC_for_Android#Run_the_druntime_and_phobos_unit_tests
Running it as root in the home directory (/data/data/berserker.android.apps.sshdroid/home) fixed those errors. I don't know how to add non-root users though.
Unless you're running sshdroid as root, it should create a temporary user, like all Android apps, and run as that user, regardless of whether you used the login "root" or not. I've found that the SSH login is irrelevant: you can type in any login for sshdroid and it will accept it, as long as it has the right password, which makes sense because it doesn't really create users of its own. So you should have been running as the app's user in it's directory, just as I wanted. I'm uninterested in debugging the user/file permissions issues that come with running elsewhere, especially since that's not allowed unless you're root, ie you can't normally run binaries from the Download/ directory.
 With some builds, I used to get an issue with core.thread 
 interacting with the static destructor for std.parallelism, 
 which would cause a segfault on exit.  This could be that 
 issue.

 As for debugging, the NDK comes with an ARM gdb server, found 
 in prebuilt/android-arm/gdbserver/gdbserver, which you can use 
 with their gdb to remotely debug Android apps.
Thanks, I got gdb-server running. In core.thread and some later modules it stops because of SIGUSR1 and SIGUSR2; I guess I should make gdb ignore those?
Yes, there's a gdb command for it: handle SIGUSR1 SIGUSR2 nostop You can also add "noprint," if you don't even want to be notified that those signals were sent.
 After continuing from all the SIGUSR signals, I get the 
 segfault that occurs after std.internal.math.gammafunction 
 passes:

 Program received signal SIGSEGV, Segmentation fault.
 [Switching to Thread 22658.22658]
 0x4250a364 in core.thread.Thread.getAll() ()
 (gdb) bt
 #0  0x4250a364 in core.thread.Thread.getAll() ()
 #1  0x43236e04 in std.parallelism._sharedStaticDtor7() ()
 #2  0x42549758 in rt.minfo.rt_moduleDtor() ()
 #3  0x42557e70 in rt_term ()
 #4  0x42558120 in _d_run_main ()
 #5  0x43e85418 in ?? ()
 Backtrace stopped: previous frame identical to this frame 
 (corrupt stack?)
 (gdb) info threads
   Id   Target Id         Frame
 * 1    Thread 22658.22658 0x4250a364 in 
 core.thread.Thread.getAll() ()

 I'm guessing this is the same issue you mentioned.
Yep, that's it. Guessing it's some sort of race on exit, since it doesn't always happen. You can remove core.thread from test.list to confirm that it's the same reason.
Nov 17 2015
prev sibling next sibling parent MrSmith <mrsmith33 yandex.ru> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 I've been running the druntime and phobos tests from the master 
 2.068 branch on various Android devices.  Please try out the 
 Android test runners I just made available and report your own 
 results in this thread:
Android 5.1.1, Nexus 7 (Asus), Snapdragon S4 Pro 8064: All tests pass, apk.
Nov 06 2015
prev sibling next sibling parent reply Laeeth Isharc <laeethnospam nospam.laeeth.com> writes:
Huawei Watch rooted with custom OS (since it seemed easiest way 
to run an executable via adb shell, and Terminal Emulator is not 
so usable on that size screen).

Android 5.1.1 Wear 1.3.0
Qualcomm MSM8926 Snapdragon 400
Quad-core 1.2 GHz Cortex-A7

All tests passed (command line).  no end-point mapper since Wear 
doesn't give you tcp access even though the watch has wifi.


0.001s PASS release32 core.atomic
0.174s PASS release32 core.bitop
0.000s PASS release32 core.checkedint
0.014s PASS release32 core.memory
0.000s PASS release32 core.exception
0.000s PASS release32 core.math
0.010s PASS release32 core.demangle
1.566s PASS release32 core.time
0.955s PASS release32 core.thread
0.000s PASS release32 core.internal.convert
0.000s PASS release32 core.internal.hash
0.000s PASS release32 core.sync.config
0.019s PASS release32 core.sync.mutex
0.039s PASS release32 core.sync.condition
0.009s PASS release32 core.sync.barrier
0.044s PASS release32 core.sync.rwmutex
0.000s PASS release32 core.sys.posix.sys.select
0.006s PASS release32 object
0.000s PASS release32 rt.aaA
0.001s PASS release32 rt.arraybyte
0.000s PASS release32 rt.arrayassign
0.000s PASS release32 rt.cover
0.000s PASS release32 rt.arraycast
0.000s PASS release32 rt.minfo
0.006s PASS release32 rt.arraydouble
0.000s PASS release32 rt.qsort
0.000s PASS release32 rt.typeinfo.ti_Aint
0.000s PASS release32 rt.adi
0.068s PASS release32 rt.lifetime
0.000s PASS release32 rt.monitor_
0.000s PASS release32 rt.arrayreal
0.003s PASS release32 rt.arrayfloat
0.000s PASS release32 rt.util.string
0.000s PASS release32 rt.util.utf
0.000s PASS release32 rt.util.hash
0.589s PASS release32 rt.util.container.treap
0.001s PASS release32 rt.util.container.hashtab
0.000s PASS release32 rt.util.container.array
0.002s PASS release32 rt.util.typeinfo
0.002s PASS release32 rt.arrayshort
0.000s PASS release32 rt.aApply
0.000s PASS release32 rt.switch_
0.009s PASS release32 rt.arrayint
0.000s PASS release32 rt.aApplyR
0.000s PASS release32 gc.config
0.000s PASS release32 gc.gc
0.000s PASS release32 gc.bits
0.000s PASS release32 gc.pooltable
0.000s PASS release32 std.typetuple
0.033s PASS release32 std.format
0.167s PASS release32 std.conv
  47.344s PASS release32 std.random
0.617s PASS release32 std.uni
0.012s PASS release32 std.encoding
0.011s PASS release32 std.zip
0.013s PASS release32 std.variant
0.002s PASS release32 std.mmfile
0.032s PASS release32 std.path
1.338s PASS release32 std.process
38.710s PASS release32 std.datetime
0.002s PASS release32 std.cstream
0.004s PASS release32 std.meta
No service for epmap.
7.741s PASS release32 std.socket
0.000s PASS release32 std.signals
0.000s PASS release32 std.typelist
0.000s PASS release32 std.outbuffer
0.105s PASS release32 std.stdio
0.008s PASS release32 std.csv
0.006s PASS release32 std.xml
0.000s PASS release32 std.mathspecial
0.013s PASS release32 std.exception
0.008s PASS release32 std.math
0.059s PASS release32 std.uuid
0.349s PASS release32 std.string
0.005s PASS release32 std.traits
0.008s PASS release32 std.ascii
0.000s PASS release32 std.complex
0.007s PASS release32 std.functional
0.019s PASS release32 std.typecons
0.009s PASS release32 std.getopt
0.032s PASS release32 std.utf
5.807s PASS release32 std.uri
0.027s PASS release32 std.stream
0.046s PASS release32 std.concurrency
0.015s PASS release32 std.bitmanip
0.123s PASS release32 std.array
0.055s PASS release32 std.bigint
0.005s PASS release32 std.base64
0.350s PASS release32 std.zlib
18.893s PASS release32 std.parallelism
0.005s PASS release32 std.json
0.009s PASS release32 std.numeric
0.372s PASS release32 std.file
0.080s PASS release32 std.algorithm.searching
0.007s PASS release32 std.algorithm.setops
0.085s PASS release32 std.algorithm.mutation
0.065s PASS release32 std.algorithm.sorting
0.010s PASS release32 std.algorithm.comparison
0.013s PASS release32 std.algorithm.iteration
0.000s PASS release32 std.container
0.010s PASS release32 std.container.util
0.000s PASS release32 std.container.binaryheap
0.113s PASS release32 std.container.rbtree
0.003s PASS release32 std.container.array
0.001s PASS release32 std.container.slist
0.001s PASS release32 std.container.dlist
0.510s PASS release32 std.digest.md
0.121s PASS release32 std.digest.crc
0.640s PASS release32 std.digest.ripemd
8.470s PASS release32 std.digest.sha
1.285s PASS release32 std.digest.digest
0.000s PASS release32 std.experimental.logger.nulllogger
1.119s PASS release32 std.experimental.logger.core
0.004s PASS release32 std.experimental.logger.filelogger
0.003s PASS release32 std.experimental.logger.multilogger
0.007s PASS release32 std.net.curl
0.138s PASS release32 std.net.isemail
0.022s PASS release32 std.range
0.030s PASS release32 std.range.primitives
0.000s PASS release32 std.range.interfaces
0.035s PASS release32 std.regex
0.000s PASS release32 std.regex.internal.ir
0.000s PASS release32 std.regex.internal.backtracking
0.073s PASS release32 std.regex.internal.generator
0.020s PASS release32 std.regex.internal.parser
3.029s PASS release32 std.regex.internal.tests
0.006s PASS release32 std.regex.internal.kickstart
0.000s PASS release32 std.internal.cstring
0.000s PASS release32 std.internal.scopebuffer
0.002s PASS release32 std.internal.math.biguintcore
0.000s PASS release32 std.internal.math.biguintnoasm
0.000s PASS release32 std.internal.math.errorfunction
0.002s PASS release32 std.internal.math.gammafunction
Jan 04
parent reply Joakim <dlang joakim.fea.st> writes:
On Tuesday, 5 January 2016 at 00:34:19 UTC, Laeeth Isharc wrote:
 Huawei Watch rooted with custom OS (since it seemed easiest way 
 to run an executable via adb shell, and Terminal Emulator is 
 not so usable on that size screen).

 [...]
Heh, I didn't think anyone would get it running on a wearable with Android Wear, good to see D runs fine on there too. The epmap thing doesn't work on all Android devices- see previous output in this thread- and I think wifi is working because none of the other tests in std.socket assert.
Jan 04
next sibling parent Laeeth Isharc <laeethnospam nospam.laeeth.com> writes:
On Tuesday, 5 January 2016 at 04:30:38 UTC, Joakim wrote:
 On Tuesday, 5 January 2016 at 00:34:19 UTC, Laeeth Isharc wrote:
 Huawei Watch rooted with custom OS (since it seemed easiest 
 way to run an executable via adb shell, and Terminal Emulator 
 is not so usable on that size screen).

 [...]
Heh, I didn't think anyone would get it running on a wearable with Android Wear, good to see D runs fine on there too. The epmap thing doesn't work on all Android devices- see previous output in this thread- and I think wifi is working because none of the other tests in std.socket assert.
That's v interesting if true, as I had thought it was crippled. (It might be the custom boot image that is the reason for this - I would have liked to have try on stock but was just too much trouble to figure out how to get the executable onto somewhere I could run it, and pretty hard to control terminal from the watch - not even an onscreen keyboard comes up). One case where little D scripts might already be potentially usable - whether on tablet or wearable - would be to trigger them via Tasker (and its plugins/clones on Wear).
Jan 04
prev sibling parent Laeeth Isharc <laeethnospam nospam.laeeth.com> writes:
On Tuesday, 5 January 2016 at 04:30:38 UTC, Joakim wrote:
 On Tuesday, 5 January 2016 at 00:34:19 UTC, Laeeth Isharc wrote:
 Huawei Watch rooted with custom OS (since it seemed easiest 
 way to run an executable via adb shell, and Terminal Emulator 
 is not so usable on that size screen).

 [...]
Heh, I didn't think anyone would get it running on a wearable with Android Wear, good to see D runs fine on there too. The epmap thing doesn't work on all Android devices- see previous output in this thread- and I think wifi is working because none of the other tests in std.socket assert.
drop me an email if you have time - laeeth at kaleidicassociates.com
Jan 04
prev sibling next sibling parent reply Joakim <dlang joakim.fea.st> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 I've been running the druntime and phobos tests from the master 
 2.068 branch on various Android devices.  Please try out the 
 Android test runners I just made available and report your own 
 results in this thread:

 https://github.com/joakim-noah/android/releases/tag/runners

 Some output is expected and doesn't need to be reported, while 
 any other deviations should be reported.  Please report the 
 Android version, found in Settings->About Device->Android 
 Version; the manufacturer; the chipset, which can be found on 
 device databases like gsmarena; and which runners you ran.  If 
 you google your device's name, usually the first link is the 
 gsmarena entry.  For example, the Samsung Galaxy S6 uses the 
 Exynos 7420:

 http://www.gsmarena.com/samsung_galaxy_s6-6849.php

 I'm using this ldc forum for this device reporting because it 
 doesn't require any registration, unlike the wiki or github.  
 I'll collect all the results and put them on the wiki later.

 All source is available to build ldc and the test runner 
 yourself, only missing the build script I used for the apk 
 version of the test runner.  I'll write up the build process on 
 the wiki and push that last script into CMake next.

 Expected output:

 - Bionic didn't support hex format for floating point, either 
 for literals or output, until Android 5.0.  As a result, I skip 
 such tests in std.conv and std.format if they fail.  The 
 command-line test runner will note that those tests were 
 skipped on pre-5.0 Android: that's expected and only needs to 
 be reported if it _doesn't_ happen on pre-5.0 Android.
I've released updated test runners on github: https://github.com/joakim-noah/android/releases/tag/polish I count eight issues reported in this thread. Here's the list, along with what has been or needs to be done: 1. std.stdio and std.socket hang on Android 5.0- this was because of a regression with locking stdout in bionic 5.0, hacked in a workaround so it shouldn't hit anymore. 2. rsw0x reported a failing test in std.file from the command-line runner on Android 6.0- others didn't have an issue with the apk on 6.0, not sure what to make of this one. 3. Nick and TheFlyingFiddle reported several modules asserting because of getcwd on Android 4.1- this was because calling getcwd with the arguments null and 0 was not supported before 4.2, put in a workaround so it shouldn't cause a problem. 4. Vlad reported an issue with one time zone in std.datetime- we narrowed it down to the timezone parser from bionic on his device not reading the timezone data properly, left the issue there as it doesn't hit anybody else. 5. Austin G reported several modules hanging on his G4- I need more info about this, since it's the only device with these problems. 6. Yazan D reported std.datetime asserting for his timezone- as he said, this is a problem upstream too, so not specific to Android. 7. Jakob reported two modules asserting when trying to create links in the Downloads directory- this is likely related to Android not allowing symbolic links on the /sdcard partition, as he said it works fine in the /data partition. 8. Jakob reported a segfault from the command-line test runner after all tests are run, related to the static destructor for std.parallelism interacting somehow with core.thread- I've seen this occasionally but not in a while, so put it aside for now. So, 1 and 3 were worked around; I'll need more info on 2, 4, and 5; 6 and 7 are out of scope of this Android port; and 8 will need to be pinned down at some point, once it can be reproduced consistently. Please try out the updated test runners, particularly if the previous ones asserted anywhere for you, and report your results in the same format as before.
Jan 17
parent reply David Nadlinger via digitalmars-d-ldc <digitalmars-d-ldc puremagic.com> writes:
Hi Joakim,

On 17 Jan 2016, at 12:24, Joakim via digitalmars-d-ldc wrote:
 I've released updated test runners on github:

 https://github.com/joakim-noah/android/releases/tag/polish
I don't have much to contribute right now but thank you for keeping us updated on the progress. We should probably figure out how to go forward with integrating this into mainline LDC soon (how do the upstream LLVM TLS support additions affect this, by the way?). I'm bringing this up now because the upcoming 2.069 merge (with the move to the D frontend) has the potential to be quite disruptive to long-term projects like yours, and I want to be sure things do no grind to a halt because of that. Best, David
Jan 18
parent reply Joakim <dlang joakim.fea.st> writes:
On Monday, 18 January 2016 at 09:32:06 UTC, David Nadlinger wrote:
 Hi Joakim,

 On 17 Jan 2016, at 12:24, Joakim via digitalmars-d-ldc wrote:
 I've released updated test runners on github:

 https://github.com/joakim-noah/android/releases/tag/polish
I don't have much to contribute right now but thank you for keeping us updated on the progress. We should probably figure out how to go forward with integrating this into mainline LDC soon (how do the upstream LLVM TLS support additions affect this, by the way?).
Yes, I wanted to polish off some of these remaining rough edges before submitting PRs. I will do that next, as there's only a couple failing tests left and they don't bother me. As for "the upstream LLVM TLS support additions," I assume you're talking about the recent support for emulated TLS added to llvm 3.8, that mimics the way gcc does it. I tried it out a while back, works fine, except I'll need to figure out how to register that TLS data with the GC, as Johannes had to do for gcc. I haven't looked into that last GC portion yet.
 I'm bringing this up now because the upcoming 2.069 merge (with 
 the move to the D frontend) has the potential to be quite 
 disruptive to long-term projects like yours, and I want to be 
 sure things do no grind to a halt because of that.
Why do you say that: do you expect it to take a while to get the 2.069 release of ldc done? Since I'm providing ldc as a cross-compiler, I don't see how it would affect the linux/x86 or linux/x64 host compiler. It might affect the native Android/ARM host compiler, but I'm optimistic that that won't take much. If you simply mean that merging might take a while after switching the ldc frontend to D, as my patches are against the current C++ version of ldc, my patches to the ldc compiler itself are fairly minimal. The vast majority is Kai's longdouble2 branch, which is only necessary when cross-compiling, and I suspect we could translate it fairly quickly if needed. Long answer short: I don't expect the 2.069 merge to affect the Android port much, but I'll try to get some PRs in before then anyway.
Jan 18
parent Dan Olson <gorox comcast.net> writes:
Joakim <dlang joakim.fea.st> writes:
 I'm bringing this up now because the upcoming 2.069 merge (with the
 move to the D frontend) has the potential to be quite disruptive to
 long-term projects like yours, and I want to be sure things do no
 grind to a halt because of that.
Why do you say that: do you expect it to take a while to get the 2.069 release of ldc done? Since I'm providing ldc as a cross-compiler, I don't see how it would affect the linux/x86 or linux/x64 host compiler. It might affect the native Android/ARM host compiler, but I'm optimistic that that won't take much. If you simply mean that merging might take a while after switching the ldc frontend to D, as my patches are against the current C++ version of ldc, my patches to the ldc compiler itself are fairly minimal. The vast majority is Kai's longdouble2 branch, which is only necessary when cross-compiling, and I suspect we could translate it fairly quickly if needed.
I think David did mean that your Android changes might get messed up by the update to D frontend 2.069. I agree that Kai's longdouble2 branch could be the most work, but it is pretty straight forward and might be easier to just reimplement as LDC starts using 2.069 D frontend. -- Dan
Jan 18
prev sibling parent blm768 <blm768 gmail.com> writes:
On Sunday, 1 November 2015 at 05:44:04 UTC, Joakim wrote:
 I've been running the druntime and phobos tests from the master 
 2.068 branch on various Android devices.  Please try out the 
 Android test runners I just made available and report your own 
 results in this thread:

 [...]
Android 5.1, Motorola, Snapdragon 410: all tests pass using the APK.
Jan 18