Package: icmake
Version: 10.01.01-2
Severity: normal
X-Debbugs-Cc: daniel.bung...@canonical.com

Dear Maintainer,

Tested against both Debian Sid and Ubuntu Jammy, icmake will fail to
build valid binaries for bobcat on s390x.

Sample build log:
https://launchpadlibrarian.net/583339337/buildlog_ubuntu-jammy-s390x.bobcat_5.09.01-2build1_BUILDING.txt.gz

# Compile the package:
./build libraries all
./build man
...
mv debian/libbobcat-dev/usr/lib/libbobcat.so.* debian/libbobcat5/usr/lib
mv: cannot stat 'debian/libbobcat-dev/usr/lib/libbobcat.so.*': No such
file or directory
make[1]: *** [debian/rules:39: override_dh_auto_install] Error 1


The './build libraries all step' does not appear to build anything.
Invoking build with 'icmake -V' shows it just exiting promptly:
+ icmake -V -t. ./build libraries all
calling `/usr/libexec/icmake/icm-pp ./build /tmp/94266ipFzw'
calling `/usr/libexec/icmake/icm-comp /tmp/94266ipFzw /tmp/9426.bim.0pXFqt'
calling `/usr/libexec/icmake/icm-exec /tmp/9426.bim.0pXFqt libraries all'

On other architectures the equivalent command actually builds things.


I played with valgrind on this a bit.  One thing that I found was that
there was an invalid read in lex.cc, seeming from an empty d_matched. 
This seems to make it not crash, but it still does not produce build artifacts.
--- a/pp/scanner/lex.cc
+++ b/pp/scanner/lex.cc
@@ -602,7 +602,7 @@

     setMatchedSize(finalPtr->length);

-    d_atBOL = d_matched.back() == '\n';
+    d_atBOL = !d_matched.empty() && d_matched.back() == '\n';


     return finalPtr->rule;


Where I stopped was the following:
==9451== Invalid read of size 8
==9451==    at 0x12D434: std::__uniq_ptr_impl<VarBase, 
std::default_delete<VarBase> >::reset(VarBase*) (unique_ptr.h:179)
==9451==    by 0x1325E3: std::__uniq_ptr_impl<VarBase, 
std::default_delete<VarBase> >::operator=(std::__uniq_ptr_impl<VarBase, 
std::default_delete<VarBase> >&&) (unique_ptr.h:167)
==9451==    by 0x13230D: std::__uniq_ptr_data<VarBase, 
std::default_delete<VarBase>, true, 
true>::operator=(std::__uniq_ptr_data<VarBase, std::default_delete<VarBase>, 
true, true>&&) (unique_ptr.h:212)
==9451==    by 0x132355: std::unique_ptr<VarBase, std::default_delete<VarBase> 
>::operator=(std::unique_ptr<VarBase, std::default_delete<VarBase> >&&) 
(unique_ptr.h:371)
==9451==    by 0x13239D: Variable::operator=(Variable&&) (variable.h:23)
==9451==    by 0x135937: CPU::popVar() (popvar.cc:10)
==9451==    by 0x136A11: CPU::run() (run.cc:23)
==9451==    by 0x138763: main (main.cc:91)
==9451==  Address 0x52f0860 is 32 bytes before a block of size 48 in arena 
"client"

-Dan

Reply via email to