> On Mar 24, 2016, at 5:18 AM, Aleksander Alekseev via lldb-dev > <lldb-dev@lists.llvm.org> wrote: > > Hello > > Here is what I do. In one terminal I connect to PostgreSQL using psql > command. In another terminal I determine pid of a new PostgreSQL > process (backend process that handles a new connection) and run: > > ``` > lldb-3.7.1 -p (pid) > ``` > > Then: > > ``` > b heap_open > c > ``` > > In first terminal: > > ``` > create temporary table tt1(x int); > ``` > > In second terminal: > > ``` > 1290 { > 1291 Relation r; > 1292 > -> 1293 r = relation_open(relationId, lockmode); > 1294 > 1295 if (r->rd_rel->relkind == RELKIND_INDEX) > 1296 ereport(ERROR, > (lldb) p r > (Relation) $0 = 0x00000002018a70c8 > (lldb) p r->rd_rel > error: Couldn't apply expression side effects : Couldn't dematerialize > a result variable: couldn't read its memory > ```
You might not realize that the value in "r" is random junk. You haven't stepped over the line that actually assigns a value to "r" yet. So yes, your expression will probably fail. Your expression turns out to be really easy: take a pointer and deref a value, so this is emulated by evaluating llvm IR and when we try to deref "r + offset of rd_rel", it fails. > This is a first issue. The second issue is: > > ``` > (lldb) process save-core /tmp/1.core > error: Failed to save core file for process: no ObjectFile plugins were > able to save a core for this process > ``` What architecture is this? I believe people added code to save core files for ELF based processes, but not all architectures are supported. Looking in: lldb/source/Plugins/Process/elf-core I see the following files: CMakeLists.txt ProcessElfCore.cpp ProcessElfCore.h RegisterContextPOSIXCore_arm.cpp RegisterContextPOSIXCore_arm.h RegisterContextPOSIXCore_arm64.cpp RegisterContextPOSIXCore_arm64.h RegisterContextPOSIXCore_mips64.cpp RegisterContextPOSIXCore_mips64.h RegisterContextPOSIXCore_powerpc.cpp RegisterContextPOSIXCore_powerpc.h RegisterContextPOSIXCore_x86_64.cpp RegisterContextPOSIXCore_x86_64.h ThreadElfCore.cpp ThreadElfCore.h So I am guessing these are the only architectures that are supported. I am guessing you might be on an i386 system? > LLDB was compiled manually from RELEASE_371/final tag using clang 3.6: > > ``` > cmake ../llvm -G Ninja -DLLDB_DISABLE_CURSES:BOOL=TRUE \ > -DCMAKE_C_COMPILER=/usr/bin/clang-3.6 \ > -DCMAKE_CXX_COMPILER=/usr/bin/clang++-3.6 \ > -DCMAKE_BUILD_TYPE=Release > ninja -j2 > sudo ninja install > ``` > > It's Ubuntu Linux 14.04 LTS: > > ``` > $ uname -a > > Linux pgsql-dev-ubuntu 3.13.0-83-generic #127-Ubuntu SMP Fri Mar 11 > 00:25:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux > ``` > > Same issues with lldb-3.6 installed using apt-get. > > `process save-core` doesn't work in lldb-3.8 compiled using ports on > FreeBSD 10.2 as well. Unfortunately I can't tell if first bug reproduces > on FreeBSD because of another bug I reported previously: > > https://llvm.org/bugs/show_bug.cgi?id=26924#c3 > > Anyway are these some sort of well-know issues that could be bypassed > somehow or brand new bugs? I can also provide any other debug > information you might need. > > -- > Best regards, > Aleksander Alekseev > http://eax.me/ > _______________________________________________ > lldb-dev mailing list > lldb-dev@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev _______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev