Tried to do this:
'''
import std.net.curl;
import std.stdio;
void main()
{
auto data = get("https://acme-staging-v02.api.letsencrypt.org/directory");
writeln(data);
}
'''
Works fine on intel, but crashes on Raspberry:
```
pi@raspi4:~/builds $ ./curldownload-gdc
std.net.curl.HTTPStatusException@/usr/lib/gcc/arm-linux-gnueabihf/8/include/d/std/net/curl.d(1050): HTTP request returned status code 0 ()
----------------
0xb6d29723 pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy object.Throwable)
???:0
0x18fb3 char[] std.net.curl._basicHTTP!(char)._basicHTTP(const(char)[], const(void)[], std.net.curl.HTTP)
/usr/lib/gcc/arm-linux-gnueabihf/8/include/d/std/net/curl.d:1050
0x16f63 char[] std.net.curl.get!(std.net.curl.HTTP, char).get(const(char)[], std.net.curl.HTTP)
/usr/lib/gcc/arm-linux-gnueabihf/8/include/d/std/net/curl.d:540
0x166ab char[] std.net.curl.get!(std.net.curl.AutoProtocol, char).get(const(char)[], std.net.curl.AutoProtocol)
/usr/lib/gcc/arm-linux-gnueabihf/8/include/d/std/net/curl.d:552
0x165d3 _Dmain
/home/pi/builds/curldownload.d:7
0xb6abc157 ???
???:0
0xb6abc453 ???
???:0
0xb6abc933 ???
???:0
0xb6abc453 ???
???:0
0xb6abc643 _d_run_main
???:0
0x1658f main
/usr/lib/gcc/arm-linux-gnueabihf/8/include/d/__entrypoint.di:44
0xb67ef717 __libc_start_main
/build/glibc-FUvrFr/glibc-2.28/csu/libc-start.c:308
pi@raspi4:~/builds $ ./curldownload
std.net.curl.HTTPStatusException@/usr/lib/ldc/arm-linux-gnueabihf/include/d/std/net/curl.d(1083): HTTP request returned status code 0 ()
----------------
exception.d:455 pure @safe bool std.exception.enforce!(bool).enforce(bool, lazy object.Throwable) [0x24c8b]
curldownload.d:1083 [0x2ccf7]
curldownload.d:562 [0x1f347]
curl.d:574 [0x1ee9f]
curldownload.d:7 [0x1edf3]
??:? void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() [0xb6ab1b17]
??:? _d_run_main [0xb6ab18af]
__entrypoint.d:8 [0x32f43]
??:? __libc_start_main [0xb67dc717]
```
Compilers:
gdc 8.3
ldc 1.12.0
Comment #1 by bugzilla — 2019-12-17T09:06:36Z
Could reproduce this on intel too with dmd.
Comment #2 by carsten.schlote — 2019-12-17T13:17:42Z
pi@raspi4:~/builds2 $ dpkg --status libcurl4 | grep Version
Version: 7.64.0-4
Fails with both GDC and LDC2.
joe@ubuntu-desktop:~/build/dlang$ dpkg --status libcurl4 | grep Version
Version: 7.58.0-2ubuntu3.8
Works for all compilers.
Maybe a problem with libcurl bindings? Or a bug with libcurl?
Comment #3 by bugzilla — 2019-12-17T14:43:04Z
Maybe. I've got 7.64.0-4 too. (Debian stable)
Comment #4 by carsten.schlote — 2020-01-03T20:09:20Z
I recompiled libcurl 7.64.0 from source with debug symbols enabled, and copied the result over the binary provided by raspbian.
The problem is now gone.
So either the Raspbian maintainers messed something up, or something else is broken.
Comment #5 by schlote — 2020-04-30T15:12:33Z
The problem still exists on 'focal fossa' ARM64 running on a raspberry4b.
$ uname -a
Linux raspi4 5.4.0-1008-raspi #8-Ubuntu SMP Wed Apr 8 11:13:06 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
Codename: focal
$ curl --version
curl 7.68.0 (aarch64-unknown-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
Release-Date: 2020-01-08
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets
$ dub upgrade -v
Using dub registry url 'https://code.dlang.org/'
Refreshing local packages (refresh existing: true)...
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /home/cschlote/.dub/packages/local-packages.json
Looking for local package map at /home/cschlote/build/dlang/lzd/.dub/packages/local-packages.json
Determined package version using GIT: lzd 0.3.4+commit.3.g1026347
Refreshing local packages (refresh existing: false)...
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /home/cschlote/.dub/packages/local-packages.json
Looking for local package map at /home/cschlote/build/dlang/lzd/.dub/packages/local-packages.json
Version selection for dependency silly (silly) of lzd is missing.
Missing dependency silly ~>1.0.2 of lzd
Upgrading project in /home/cschlote/build/dlang/lzd
Search for versions of silly (1 package suppliers)
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback package supplier registry at https://code-mirror.dlang.io/ failed with 'Failed to download https://code-mirror.dlang.io/api/packages/infos?packages=%5B%22silly%22%5D&include_dependencies=true&minimize=true'.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Package supplier registry at https://code.dlang.org/ failed with 'HTTP request returned status code 0 ()', trying fallbacks.
Fallback registry at https://dub-registry.herokuapp.com/ succeeded
Return for silly: [0.8.2, 0.8.1, 0.8.0, 0.7.1, 0.7.0, 0.6.0, 0.5.0, 0.4.3, 0.4.2, 0.4.1, 0.4.0, 0.3.0, 0.2.1, 0.2.0, 0.1.1, 0.1.0, 0.0.2, 0.0.1, 0.7.0-alpha, ~master]
Unresolvable dependencies to package silly:
lzd 0.3.4+commit.3.g1026347 depends on silly ~>1.0.2
That is broken: Version 1.0.2 exists. Also a return value of 0 shouldn't happen here.
This works all fine on the 'focal fossa' and intel architecture.
Comment #6 by schlote — 2020-05-01T07:53:42Z
It(In reply to Carsten Schlote from comment #5)
> The problem still exists on 'focal fossa' ARM64 running on a raspberry4b.
The problem exists with gdc from the standard Ubuntu repository.
$ gdc --version
gdc (Ubuntu 10-20200411-0ubuntu1) 10.0.1 20200411 (experimental) [master revision bb87d5cc77d:75961caccb7:f883c46b4877f637e0fa5025b4d6b5c9040ec566]
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
However, with LDC2 compiled from sources directly (using gdc a D compiler for build), it is working.
$ ldc2 --version
LDC - the LLVM D compiler (1.20.1):
based on DMD v2.090.1 and LLVM 10.0.0
built with LDC - the LLVM D compiler (1.20.1)
Default target: aarch64-unknown-linux-gnu
Host CPU: cortex-a72
http://dlang.org - http://wiki.dlang.org/LDC