On 11 Gen, 13:44, Giovanni Bajo <[email protected]> wrote:
> On sab, 2009-01-10 at 04:04 -0800, Antonio Valentino wrote:
>
> > On 10 Gen, 03:51, Giovanni Bajo <[email protected]> wrote:
> > > On ven, 2009-01-09 at 12:18 -0800, Antonio Valentino wrote:
>
> > > > On 9 Gen, 20:58, Giovanni Bajo <[email protected]> wrote:
> > > > > On 1/9/2009 4:44 PM, [email protected] wrote:
>
> > > > > > I can reproduce this problem on my mandriva x86_64 setup.  I tried a
> > > > > > few random revisions of SVN trunk yesterday, all with the same
> > > > > > problem.  The code segfaults at source/common/launch.c:665 for me:
>
> > > > > >   664
> > > > > >   665             Py_DECREF(mods);
> > > > > >   666             free(modbuf);
>
> > > > > The DECREF is surely not wrong, so removing it is just papering over 
> > > > > the
> > > > > real problem, as far as I can tell.
>
> > > > > Is mods a valid pointer or is it NULL, when it crashes? If it's NULL,
> > > > > what's the value of the expression "ntohl(ptoc->ulen) - 8"?
>
> > > > (gdb) print mods
> > > > $1 = (PyObject *) 0x23a1460
> > > > (gdb) print ntohl(ptoc->ulen)
> > > > $2 = 19728
>
> > > print *mods ?
>
> > (gdb) print *mods
> > $1 = {ob_refcnt = 0, ob_type = 0x7f8042147ea0}
>
> So, the object pointed by "mods" has refcount 0 *before* calling
> Py_DECREF? At what point does it become zero?

No, it is zero after segfault.

$ gdb ./dist/test/test
(gdb) break launch.c:665
Breakpoint 1 at 0x403aa6: file ../common/launch.c, line 665.
(gdb) run
Starting program: /home/antonio/tmp/pyinstaller-test/dist/test/test
[Thread debugging using libthread_db enabled]
thisfile is /home/antonio/tmp/pyinstaller-test/dist/test/test
_MEIPASS2 (workpath) is NULL
homepath is /home/antonio/tmp/pyinstaller-test/dist/test/
Extracting binaries
[New Thread 0x7fb99283e6e0 (LWP 7876)]
/home/antonio/tmp/pyinstaller-test/dist/test/libpython2.5.so.1.0
Manipulating evironment
PYTHONPATH=/home/antonio/tmp/pyinstaller-test/dist/test
importing modules from CArchive
iu
[Switching to Thread 0x7fb99283e6e0 (LWP 7876)]

Breakpoint 1, importModules () at ../common/launch.c:665
665                             Py_DECREF(mods);
(gdb) print *mods
$1 = {ob_refcnt = 1, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403aaa      665                             Py_DECREF(mods);
(gdb) print *mods
$2 = {ob_refcnt = 1, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403aad      665                             Py_DECREF(mods);
(gdb) print *mods
$3 = {ob_refcnt = 1, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403aaf      665                             Py_DECREF(mods);
(gdb) print *mods
$4 = {ob_refcnt = 1, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403ab3      665                             Py_DECREF(mods);
(gdb) print *mods
$5 = {ob_refcnt = 0, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
665                             Py_DECREF(mods);
(gdb) print *mods
$6 = {ob_refcnt = 0, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403add      665                             Py_DECREF(mods);
(gdb) print *mods
$7 = {ob_refcnt = 0, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403ae0      665                             Py_DECREF(mods);
(gdb) print *mods
$8 = {ob_refcnt = 0, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000000001 in ?? ()
(gdb) print *mods
No symbol "mods" in current context.
(gdb) stepi

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000001 in ?? ()

(gdb) up
#1  0x0000000000403ae3 in importModules () at ../common/launch.c:665
665                             Py_DECREF(mods);
(gdb) disassemble
Dump of assembler code for function importModules:
0x00000000004039c0 <importModules+0>:   push   %r14
0x00000000004039c2 <importModules+2>:   mov    $0x4056f8,%edi
0x00000000004039c7 <importModules+7>:   push   %r13
0x00000000004039c9 <importModules+9>:   push   %r12
0x00000000004039cb <importModules+11>:  push   %rbp
0x00000000004039cc <importModules+12>:  push   %rbx
0x00000000004039cd <importModules+13>:  callq  0x402658 <p...@plt>
0x00000000004039d2 <importModules+18>:  mov    $0x405179,%edi
0x00000000004039d7 <importModules+23>:  callq  *0x2040a3(%rip)        #
0x607a80 <PI_PyImport_ImportModule>
0x00000000004039dd <importModules+29>:  mov    %rax,%rdi
0x00000000004039e0 <importModules+32>:  callq  *0x2040da(%rip)        #
0x607ac0 <PI_PyModule_GetDict>
0x00000000004039e6 <importModules+38>:  mov    $0x405181,%esi
0x00000000004039eb <importModules+43>:  mov    %rax,%rdi
0x00000000004039ee <importModules+46>:  callq  *0x2040d4(%rip)        #
0x607ac8 <PI_PyDict_GetItemString>
0x00000000004039f4 <importModules+52>:  mov    0x204255(%rip),
%rbx        # 0x607c50 <f_tocbuff>
0x00000000004039fb <importModules+59>:  cmp    0x204256(%rip),
%rbx        # 0x607c58 <f_tocend>
0x0000000000403a02 <importModules+66>:  mov    %rax,%r14
0x0000000000403a05 <importModules+69>:  jb     0x403a2d <importModules
+109>
0x0000000000403a07 <importModules+71>:  jmpq   0x403ac8 <importModules
+264>
0x0000000000403a0c <importModules+76>:  nopl   0x0(%rax)
0x0000000000403a10 <importModules+80>:  cmp    $0x4d,%al
0x0000000000403a12 <importModules+82>:  je     0x403a35 <importModules
+117>
0x0000000000403a14 <importModules+84>:  mov    %rbx,%rdi
0x0000000000403a17 <importModules+87>:  nop
0x0000000000403a18 <importModules+88>:  callq  0x403510
<incrementTocPtr>
0x0000000000403a1d <importModules+93>:  cmp    %rax,0x204234
(%rip)        # 0x607c58 <f_tocend>
0x0000000000403a24 <importModules+100>: mov    %rax,%rbx
0x0000000000403a27 <importModules+103>: jbe    0x403ac8 <importModules
+264>
0x0000000000403a2d <importModules+109>: movzbl 0x11(%rbx),%eax
0x0000000000403a31 <importModules+113>: cmp    $0x6d,%al
0x0000000000403a33 <importModules+115>: jne    0x403a10 <importModules
+80>
0x0000000000403a35 <importModules+117>: lea    0x12(%rbx),%rbp
0x0000000000403a39 <importModules+121>: mov    %rbx,%rdi
0x0000000000403a3c <importModules+124>: callq  0x403830 <extract>
0x0000000000403a41 <importModules+129>: mov    0xc(%rbx),%esi
0x0000000000403a44 <importModules+132>: lea    0x8(%rax),%rdi
0x0000000000403a48 <importModules+136>: mov    %rax,%r13
0x0000000000403a4b <importModules+139>: bswap  %esi
0x0000000000403a4d <importModules+141>: sub    $0x8,%esi
0x0000000000403a50 <importModules+144>: callq  *0x20405a(%rip)
# 0x607ab0 <PI_PyString_FromStringAndSize>
0x0000000000403a56 <importModules+150>: mov    %rbp,%rdi
0x0000000000403a59 <importModules+153>: mov    %rax,%r12
0x0000000000403a5c <importModules+156>: callq  0x402658 <p...@plt>
0x0000000000403a61 <importModules+161>: mov    %r12,%rdx
0x0000000000403a64 <importModules+164>: mov    $0x405187,%esi
0x0000000000403a69 <importModules+169>: mov    %r14,%rdi
0x0000000000403a6c <importModules+172>: xor    %eax,%eax
0x0000000000403a6e <importModules+174>: callq  *0x204044(%rip)
# 0x607ab8 <PI_PyObject_CallFunction>
0x0000000000403a74 <importModules+180>: mov    %rbp,%rdi
0x0000000000403a77 <importModules+183>: mov    %rax,%rsi
0x0000000000403a7a <importModules+186>: callq  *0x203fe8(%rip)
# 0x607a68 <PI_PyImport_ExecCodeModule>
0x0000000000403a80 <importModules+192>: test   %rax,%rax
0x0000000000403a83 <importModules+195>: je     0x403ae8 <importModules
+296>
0x0000000000403a85 <importModules+197>: callq  *0x20404d(%rip)
# 0x607ad8 <PI_PyErr_Occurred>
0x0000000000403a8b <importModules+203>: test   %rax,%rax
0x0000000000403a8e <importModules+206>: xchg   %ax,%ax
0x0000000000403a90 <importModules+208>: je     0x403aa6 <importModules
+230>
0x0000000000403a92 <importModules+210>: nopw   0x0(%rax,%rax,1)
0x0000000000403a98 <importModules+216>: callq  *0x204042(%rip)
# 0x607ae0 <PI_PyErr_Print>
0x0000000000403a9e <importModules+222>: xchg   %ax,%ax
0x0000000000403aa0 <importModules+224>: callq  *0x20402a(%rip)
# 0x607ad0 <PI_PyErr_Clear>
0x0000000000403aa6 <importModules+230>: mov    (%r12),%eax
0x0000000000403aaa <importModules+234>: sub    $0x1,%eax
0x0000000000403aad <importModules+237>: test   %eax,%eax
0x0000000000403aaf <importModules+239>: mov    %eax,(%r12)
0x0000000000403ab3 <importModules+243>: je     0x403ad8 <importModules
+280>
0x0000000000403ab5 <importModules+245>: mov    %r13,%rdi
0x0000000000403ab8 <importModules+248>: callq  0x402708 <f...@plt>
0x0000000000403abd <importModules+253>: jmpq   0x403a14 <importModules
+84>
0x0000000000403ac2 <importModules+258>: nopw   0x0(%rax,%rax,1)
0x0000000000403ac8 <importModules+264>: pop    %rbx
0x0000000000403ac9 <importModules+265>: pop    %rbp
0x0000000000403aca <importModules+266>: pop    %r12
0x0000000000403acc <importModules+268>: pop    %r13
0x0000000000403ace <importModules+270>: xor    %eax,%eax
0x0000000000403ad0 <importModules+272>: pop    %r14
0x0000000000403ad2 <importModules+274>: retq
0x0000000000403ad3 <importModules+275>: nopl   0x0(%rax,%rax,1)
0x0000000000403ad8 <importModules+280>: mov    0x8(%r12),%rax
0x0000000000403add <importModules+285>: mov    %r12,%rdi
0x0000000000403ae0 <importModules+288>: callq  *0x28(%rax)
0x0000000000403ae3 <importModules+291>: jmp    0x403ab5 <importModules
+245>
0x0000000000403ae5 <importModules+293>: nopl   (%rax)
0x0000000000403ae8 <importModules+296>: mov    %rbp,%rdx
0x0000000000403aeb <importModules+299>: mov    $0x405189,%esi
0x0000000000403af0 <importModules+304>: mov    $0x1,%edi
0x0000000000403af5 <importModules+309>: callq  0x402688
<__printf_...@plt>
0x0000000000403afa <importModules+314>: jmp    0x403a85 <importModules
+197>
End of assembler dump.
(gdb) info registers
rax            0x7fb9917f9ea0   140434986737312
rbx            0xc6f2b0 13038256
rcx            0x7fb9927f7000   140435003502592
rdx            0x7fb9927bc010   140435003260944
rsi            0xc6fc60 13040736
rdi            0xcdd460 13489248
rbp            0xc6f2c2 0xc6f2c2
rsp            0x7fff9a86e160   0x7fff9a86e160
r8             0x7f     127
r9             0x2      2
r10            0x2      2
r11            0x7fb99151f480   140434983744640
r12            0xcdd460 13489248
r13            0xc8d260 13161056
r14            0x7fb99280c998   140435003591064
r15            0x0      0
rip            0x403ae3 0x403ae3 <importModules+291>
eflags         0x10246  [ PF ZF IF RF ]
cs             0x33     51
ss             0x2b     43
ds             0x0      0
es             0x0      0
fs             0x0      0
gs             0x0      0
fctrl          0x37f    895
fstat          0x0      0
ftag           0xffff   65535
fiseg          0x0      0
fioff          0x0      0
foseg          0x0      0
fooff          0x0      0
fop            0x0      0
mxcsr          0x1f80   [ IM DM ZM OM UM PM ]

####### END #######

It seems to me that the last instruction executed correctly is:

"0x0000000000403ae0 <importModules+288>:        callq  *0x28(%rax)"

> --
> Giovanni Bajo
> Develer S.r.l.http://www.develer.com

--
Antonio Valentino
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/PyInstaller?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to