Crush of HomeScreen/Launcher at bootup by nullptr access
Description
libhomescreen.so always crushed when std::getenv("AFM_ID") returns nullptr. I see this on M3 with FF-RC3 + following patches, and configured with agl-demo (without agl-devel at this case).
meta-agl:
9710e7e 2018-08-23 Jan-Simon Moeller Make it possible to use systemd-coredump for development
6da5cf9 2018-08-23 Jan-Simon Moeller [Work-around] Update recipe for ImageMagick to avoid bitbake error
16d03b8 2018-08-23 ronan Le Martret Port the latest version of valgrind
66d9349 2018-08-20 Jose Bollo af-binder & af-main: Add external binding feature
(gdb) back
#0 strlen () at ../sysdeps/aarch64/strlen.S:94
#1 0x0000ffff8e0f9a78 in std::char_traits<char>::length (__s=0x0) at /usr/include/c++/7.3.0/bits/char_traits.h:320
#2 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign (__s=0x0, this=0xaaaae31c7690)
at /usr/include/c++/7.3.0/bits/basic_string.h:1419
#3 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator= (__s=0x0, this=0xaaaae31c7690)
at /usr/include/c++/7.3.0/bits/basic_string.h:694
#4 LibHomeScreen::init (this=this@entry=0xaaaae31c7650, port=port@entry=1027, token=...)
at /usr/src/debug/libhomescreen-2017/git-r0/git/src/libhomescreen.cpp:138
#5 0x0000aaaab71f8848 in HomescreenHandler::init (this=0xaaaae3228fc0, port=1027,
token=0xaaaae3225fb0 "7e647f32-ce93-4da8-bcb2-6328d49fb956")
at /usr/src/debug/homescreen/1.0+gitAUTOINC+856f9d9de4-r0/git/homescreen/src/homescreenhandler.cpp:40
#6 0x0000aaaab71f3604 in main (argc=<optimized out>, argv=<optimized out>)
at /usr/src/debug/homescreen/1.0+gitAUTOINC+856f9d9de4-r0/git/homescreen/src/main.cpp:122
(gdb) up
#1 0x0000ffff8e0f9a78 in std::char_traits<char>::length (__s=0x0) at /usr/include/c++/7.3.0/bits/char_traits.h:320
320 return __builtin_strlen(__s);
(gdb) up
#2 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign (__s=0x0, this=0xaaaae31c7690)
at /usr/include/c++/7.3.0/bits/basic_string.h:1419
1419 return _M_replace(size_type(0), this->size(), __s,
(gdb) up
#3 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator= (__s=0x0, this=0xaaaae31c7690)
at /usr/include/c++/7.3.0/bits/basic_string.h:694
694 { return this->assign(__s); }
(gdb) up
#4 LibHomeScreen::init (this=this@entry=0xaaaae31c7650, port=port@entry=1027, token=...)
at /usr/src/debug/libhomescreen-2017/git-r0/git/src/libhomescreen.cpp:138
138 mapp_id = std::getenv("AFM_ID");
libhomescreen.so always crushed when std::getenv("AFM_ID") returns nullptr.
I see this on M3 with FF-RC3 + following patches, and configured with agl-demo (without agl-devel at this case).
meta-agl: 9710e7e 2018-08-23 Jan-Simon Moeller Make it possible to use systemd-coredump for development 6da5cf9 2018-08-23 Jan-Simon Moeller [Work-around] Update recipe for ImageMagick to avoid bitbake error 16d03b8 2018-08-23 ronan Le Martret Port the latest version of valgrind 66d9349 2018-08-20 Jose Bollo af-binder & af-main: Add external binding feature
(gdb) back #0 strlen () at ../sysdeps/aarch64/strlen.S:94 #1 0x0000ffff8e0f9a78 in std::char_traits<char>::length (__s=0x0) at /usr/include/c++/7.3.0/bits/char_traits.h:320 #2 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign (__s=0x0, this=0xaaaae31c7690) at /usr/include/c++/7.3.0/bits/basic_string.h:1419 #3 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator= (__s=0x0, this=0xaaaae31c7690) at /usr/include/c++/7.3.0/bits/basic_string.h:694 #4 LibHomeScreen::init (this=this@entry=0xaaaae31c7650, port=port@entry=1027, token=...) at /usr/src/debug/libhomescreen-2017/git-r0/git/src/libhomescreen.cpp:138 #5 0x0000aaaab71f8848 in HomescreenHandler::init (this=0xaaaae3228fc0, port=1027, token=0xaaaae3225fb0 "7e647f32-ce93-4da8-bcb2-6328d49fb956") at /usr/src/debug/homescreen/1.0+gitAUTOINC+856f9d9de4-r0/git/homescreen/src/homescreenhandler.cpp:40 #6 0x0000aaaab71f3604 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/homescreen/1.0+gitAUTOINC+856f9d9de4-r0/git/homescreen/src/main.cpp:122 (gdb) up #1 0x0000ffff8e0f9a78 in std::char_traits<char>::length (__s=0x0) at /usr/include/c++/7.3.0/bits/char_traits.h:320 320 return __builtin_strlen(__s); (gdb) up #2 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign (__s=0x0, this=0xaaaae31c7690) at /usr/include/c++/7.3.0/bits/basic_string.h:1419 1419 return _M_replace(size_type(0), this->size(), __s, (gdb) up #3 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator= (__s=0x0, this=0xaaaae31c7690) at /usr/include/c++/7.3.0/bits/basic_string.h:694 694 { return this->assign(__s); } (gdb) up #4 LibHomeScreen::init (this=this@entry=0xaaaae31c7650, port=port@entry=1027, token=...) at /usr/src/debug/libhomescreen-2017/git-r0/git/src/libhomescreen.cpp:138 138 mapp_id = std::getenv("AFM_ID");
This is introduced by https://gerrit.automotivelinux.org/gerrit/#/c/16011/
I don't have any idea which condition make std::getenv("AFM_ID") returns nulllptr.