Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rare build failure #5393

Closed
sandy-lcq opened this issue Jan 4, 2022 · 1 comment
Closed

rare build failure #5393

sandy-lcq opened this issue Jan 4, 2022 · 1 comment
Labels
Type: Bug A previously unknown bug in PMDK

Comments

@sandy-lcq
Copy link

sandy-lcq commented Jan 4, 2022

ISSUE: Build Failure

Compile failed

Environment Information

Cross compile with yocto project.
pmdk version: 1.9

Please provide a reproduction of the bug:

  1. git clone git://git.yoctoproject.org/poky
  2. git clone git://git.openembedded.org/meta-openembedded
  3. cd poky
  4. . oe-init-build-env
  5. echo 'BBLAYERS += "/yocto/meta-openembedded/meta-oe"' >> conf/bblayers.conf
  6. bitbake pmdk

How often bug is revealed: (always, often, rare):

rare

Actual behavior:

Part of the failed log:
a - ../nondebug/libpmempool/libpmempool_all.o
make[2]: Leaving directory '/build/tmp-glibc/work/corei7-64-wrs-linux/pmdk/1.9-r0/git/src/libpmempool'
make -C libpmempool DEBUG=1
make[2]: Entering directory '/build/tmp-glibc/work/corei7-64-wrs-linux/pmdk/1.9-r0/git/src/libpmempool'
mkdir -p ../debug/libpmempool
mkdir -p ../debug/libpmempool/..
make -C libpmemblk
make[3]: Entering directory '/build/tmp-glibc/work/corei7-64-wrs-linux/pmdk/1.9-r0/git/src/libpmempool'
make[3]: *** libpmemblk: No such file or directory. Stop.

make[3]: Leaving directory '/build/tmp-glibc/work/corei7-64-wrs-linux/pmdk/1.9-r0/git/src/libpmempool'
make[2]: *** [../Makefile.inc:265: ../debug/libpmempool/../libpmemblk/libpmemblk_unscoped.o] Error 2
make[2]: *** Waiting for unfinished jobs....

Bold part is not expected.

Here is my analyzation:

In the failed log, after Entering src/libpmempool, the build system think "../debug/libpmempool/../libpmemblk/libpmemblk_unscoped.o"
is not existed, so it try to build following target in src/Makefile.inc, and LIBSDIR is not defined, the build system try to enter libpmemblk, but we are now under src/libpmempool, so "No such file or directory" happened.
$(PMEMBLK_PRIV_OBJ):
$(MAKE) -C $(LIBSDIR) libpmemblk

But I cannot understand why it is happened, because, we have already add following dependency in src/Makefile
libpmempool: libpmemblk

so that, during run "make -C libpmempool DEBUG=1", libpmemblk_unscoped.o already there, so target $(PMEMBLK_PRIV_OBJ) should not be build.

and from the failed log, I can see "../debug/libpmempool/../libpmemblk/libpmemblk_unscoped.o" already generated. why the build system take it as not exist?

After the build failed and exited, I checked ../debug/libpmempool/../libpmemblk/libpmemblk_unscoped.o is there.

Please see Details for more log info.

Expected behavior:

Part of the success log:
a - ../nondebug/libpmempool/libpmempool_all.o
ln -sf libpmempool.so.1.0.0 ../nondebug/libpmempool/../libpmempool.so.1
ln -sf libpmempool.so.1 ../nondebug/libpmempool/../libpmempool.so
make[2]: Leaving directory '/build/tmp-glibc/work/corei7-64-wrs-linux/pmdk/1.11.1-r0/git/src/libpmempool'
make -C libpmempool DEBUG=1
make[2]: Entering directory '/build/tmp-glibc/work/corei7-64-wrs-linux/pmdk/1.11.1-r0/git/src/libpmempool'
mkdir -p ../debug/libpmempool
mkdir -p ../debug/libpmempool/..
x86_64-wrs-linux-gcc -m64 -march=nehalem -mtune=generic -mfpmath=sse -m
~

Details

Some log info:

$ grep -rRn "make -C" log.do_compile
6:make -C src all
8:make -C libpmem
9:make -C common
10:make -C core
11:make -C librpmem
12:make -C libpmem2
22:make -C librpmem DEBUG=1
261:make -C core DEBUG=1
321:make -C common DEBUG=1
420:make -C libpmem2 DEBUG=1
426:make -C libpmem DEBUG=1
615:make -C libpmemblk
616:make -C libpmemlog
617:make -C libpmemobj
844:make -C libpmemlog DEBUG=1
853:make -C libpmemobj DEBUG=1
1193:make -C libpmemblk DEBUG=1
1294:make -C libpmempool
1435:make -C libpmempool DEBUG=1

1439:make -C libpmemblk

$ grep -rRn "-o.debug.libpmemblk_unscoped.o" log.do_compile
1184:x86_64-wrs-linux-ld --sysroot=/build/tmp-glibc/work/corei7-64-wrs-linux/pmdk/1.9-r0/recipe-sysroot -o ../nondebug/libpmemblk/libpmemblk_unscoped.o -r ../nondebug/libpmemblk/alloc.o ../nondebug/libpmemblk/fs_posix.o ../nondebug/libpmemblk/os_posix.o ../nondebug/libpmemblk/os_thread_posix.o ../nondebug/libpmemblk/out.o ../nondebug/libpmemblk/util.o ../nondebug/libpmemblk/util_posix.o ../nondebug/libpmemblk/bad_blocks.o ../nondebug/libpmemblk/set_badblocks.o ../nondebug/libpmemblk/ctl.o ../nondebug/libpmemblk/ctl_prefault.o ../nondebug/libpmemblk/ctl_sds.o ../nondebug/libpmemblk/ctl_fallocate.o ../nondebug/libpmemblk/ctl_cow.o ../nondebug/libpmemblk/file.o ../nondebug/libpmemblk/file_posix.o ../nondebug/libpmemblk/mmap.o ../nondebug/libpmemblk/mmap_posix.o ../nondebug/libpmemblk/os_deep_linux.o ../nondebug/libpmemblk/pool_hdr.o ../nondebug/libpmemblk/rand.o ../nondebug/libpmemblk/ravl.o ../nondebug/libpmemblk/set.o ../nondebug/libpmemblk/shutdown_state.o ../nondebug/libpmemblk/uuid.o ../nondebug/libpmemblk/uuid_linux.o ../nondebug/libpmemblk/pmem2_utils.o ../nondebug/libpmemblk/config.o ../nondebug/libpmemblk/persist_posix.o ../nondebug/libpmemblk/badblocks.o ../nondebug/libpmemblk/badblocks_ndctl.o ../nondebug/libpmemblk/usc_ndctl.o ../nondebug/libpmemblk/source.o ../nondebug/libpmemblk/source_posix.o ../nondebug/libpmemblk/auto_flush_linux.o ../nondebug/libpmemblk/deep_flush_linux.o ../nondebug/libpmemblk/extent_linux.o ../nondebug/libpmemblk/pmem2_utils_linux.o ../nondebug/libpmemblk/pmem2_utils_ndctl.o ../nondebug/libpmemblk/region_namespace_ndctl.o ../nondebug/libpmemblk/blk.o ../nondebug/libpmemblk/btt.o ../nondebug/libpmemblk/libpmemblk.o
1186:x86_64-wrs-linux-objcopy --localize-hidden sed -n 's/^ *\([a-zA-Z0-9_]*\);$/-G \1/p' libpmemblk.link ../nondebug/libpmemblk/libpmemblk_unscoped.o ../nondebug/libpmemblk/libpmemblk_all.o
1285:x86_64-wrs-linux-ld --sysroot=/build/tmp-glibc/work/corei7-64-wrs-linux/pmdk/1.9-r0/recipe-sysroot -o ../debug/libpmemblk/libpmemblk_unscoped.o -r ../debug/libpmemblk/alloc.o ../debug/libpmemblk/fs_posix.o ../debug/libpmemblk/os_posix.o ../debug/libpmemblk/os_thread_posix.o ../debug/libpmemblk/out.o ../debug/libpmemblk/util.o ../debug/libpmemblk/util_posix.o ../debug/libpmemblk/bad_blocks.o ../debug/libpmemblk/set_badblocks.o ../debug/libpmemblk/ctl.o ../debug/libpmemblk/ctl_prefault.o ../debug/libpmemblk/ctl_sds.o ../debug/libpmemblk/ctl_fallocate.o ../debug/libpmemblk/ctl_cow.o ../debug/libpmemblk/file.o ../debug/libpmemblk/file_posix.o ../debug/libpmemblk/mmap.o ../debug/libpmemblk/mmap_posix.o ../debug/libpmemblk/os_deep_linux.o ../debug/libpmemblk/pool_hdr.o ../debug/libpmemblk/rand.o ../debug/libpmemblk/ravl.o ../debug/libpmemblk/set.o ../debug/libpmemblk/shutdown_state.o ../debug/libpmemblk/uuid.o ../debug/libpmemblk/uuid_linux.o ../debug/libpmemblk/pmem2_utils.o ../debug/libpmemblk/config.o ../debug/libpmemblk/persist_posix.o ../debug/libpmemblk/badblocks.o ../debug/libpmemblk/badblocks_ndctl.o ../debug/libpmemblk/usc_ndctl.o ../debug/libpmemblk/source.o ../debug/libpmemblk/source_posix.o ../debug/libpmemblk/auto_flush_linux.o ../debug/libpmemblk/deep_flush_linux.o ../debug/libpmemblk/extent_linux.o ../debug/libpmemblk/pmem2_utils_linux.o ../debug/libpmemblk/pmem2_utils_ndctl.o ../debug/libpmemblk/region_namespace_ndctl.o ../debug/libpmemblk/blk.o ../debug/libpmemblk/btt.o ../debug/libpmemblk/libpmemblk.o
1287:x86_64-wrs-linux-objcopy --localize-hidden sed -n 's/^ *\([a-zA-Z0-9_]*\);$/-G \1/p' libpmemblk.link ../debug/libpmemblk
/libpmemblk_unscoped.o** ../debug/libpmemblk/libpmemblk_all.o

$ grep -rRn "No such" log.do_compile.bak
1441: make[3]: libpmemblk: No such file or directory. Stop.

Additional information about Priority and Help Requested:

I have 2 ideas about fix this, but I am not quite familiar with this package, so please help to check, thanks.

  1. just remove following part, since we already have libpmempool: libpmemblk
    $(PMEMBLK_PRIV_OBJ):
    $(MAKE) -C $(LIBSDIR) libpmemblk

  2. set LIBSDIR correctly during build target libpmempool. I have one concern, is it good to rebuild libpmemblk again?

@sandy-lcq sandy-lcq added the Type: Bug A previously unknown bug in PMDK label Jan 4, 2022
@lukaszstolarczuk
Copy link
Member

libpmemblk will be deprecated in release 1.13.0 (#5538) and it will be removed in the following release. This issue won't be fixed.
For further reading, please take a look at our blog post with more details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Bug A previously unknown bug in PMDK
Projects
None yet
Development

No branches or pull requests

2 participants