Your message dated Thu, 21 Jun 2018 03:06:19 +1000
with message-id <4699358.jVsBpJtdzL@deblab>
and subject line Done: docker.io: Conflicting declarations of
DevmapperLogCallback
has caused the Debian Bug report #750042,
regarding docker.io: Conflicting declarations of DevmapperLogCallback
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
750042: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=750042
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: docker.io
Version: 0.11.1~dfsg1-1
Usertags: goto-cc
During a rebuild of all Debian packages in a clean sid chroot (using cowbuilder
and pbuilder) the build failed with the following error. Please note that we
use our research compiler tool-chain (using tools from the cbmc package), which
permits extended reporting on type inconsistencies at link time.
[...]
# github.com/dotcloud/docker/daemon/graphdriver/devmapper
file
$WORK/github.com/dotcloud/docker/daemon/graphdriver/devmapper/_obj/_cgo_export.c
line 6: error: conflicting definition for symbol
"_cgoexp_5107ef893e0c_DevmapperLogCallback"
old definition in module _cgo_main file
$WORK/github.com/dotcloud/docker/daemon/graphdriver/devmapper/_obj/_cgo_main.c
line 5
signed int
new definition in module _cgo_export file
$WORK/github.com/dotcloud/docker/daemon/graphdriver/devmapper/_obj/_cgo_export.c
line 6
void (void *, signed int)
debian/rules:25: recipe for target 'override_dh_auto_build' failed
make[1]: *** [override_dh_auto_build] Error 1
make[1]: Leaving directory
'/srv/jenkins-slave/workspace/sid-goto-cc-docker.io/docker.io-0.11.1~dfsg1'
debian/rules:67: recipe for target 'build' failed
make: *** [build] Error 2
Now I must admit that I'm pretty much at loss with the build system here - most
likely this is an upstream issue, but I'm not sure whether the build scripts
(with their bold warning) have any influence here.
So I did add a -x -work to "go build" in hack/make/binary to gain some more
insight. I could then take a look at the generated _cgo_main.c, which has this
contents:
$ cat
/tmp/go-build034909373/github.com/dotcloud/docker/daemon/graphdriver/devmapper/_obj/_cgo_main.c
int main() { return 0; }
void crosscall2(void(*fn)(void*, int), void *a, int c) { }
void _cgo_allocate(void *a, int c) { }
void _cgo_panic(void *a, int c) { }
int _cgoexp_5107ef893e0c_DevmapperLogCallback;
So clearly this is not just an entirely dumb list of symbol names, but really
seems to be of some use. Yet if the linker gets to see the above file as well as
$ cat
/tmp/go-build034909373/github.com/dotcloud/docker/daemon/graphdriver/devmapper/_obj/_cgo_export.c
/* Created by cgo - DO NOT EDIT. */
#include "_cgo_export.h"
extern void crosscall2(void (*fn)(void *, int), void *, int);
extern void _cgoexp_5107ef893e0c_DevmapperLogCallback(void *, int);
void DevmapperLogCallback(int p0, char* p1, int p2, int p3, char* p4)
{
struct {
int p0;
char __pad0[4];
char* p1;
int p2;
int p3;
char* p4;
} __attribute__((packed)) a;
a.p0 = p0;
a.p1 = p1;
a.p2 = p2;
a.p3 = p3;
a.p4 = p4;
crosscall2(_cgoexp_5107ef893e0c_DevmapperLogCallback, &a, 32);
}
then it will have to make a decision on which section to put that symbol into -
is it data or code? If the declaration from _cgo_main.c happens to be ignored,
you're lucky - else things will crash badly at runtime.
Unfortunately I'm clueless on how either of the two files were generated - even
go build -x -work did not seem to print a command that (in some obvious way)
generated the _cgo_main.c file. (I'm happy to perform further investigations if
any guidance could be provided.)
Best,
Michael
pgp38OSIEpild.pgp
Description: PGP signature
--- End Message ---
--- Begin Message ---
Package: docker.io
Version: 17.12.1+dfsg-1
To my surprise I've found that earlier releases of Docker were sensitive to
Go compiler version. For instance, I could only build Docker 1.13.1 by go-1.7
while under newer Go compilers Docker was exhibiting tests failures and run
time problems...
Fortunately current version of Docker can be built reliably.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.
signature.asc
Description: This is a digitally signed message part.
--- End Message ---