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, where exactly does it crash, at the assembly level? What is the
> exact machine instructor? What is the "crash" cause?
Unfortunately I'm not familiar with Python C API and not familiar with
assembly level debugging too.
I hope this can help you.
### GDB ##################################################
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/
gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show
copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(gdb) run
Starting program: /home/antonio/tmp/pyinstaller-test/dist/test/test
[Thread debugging using libthread_db enabled]
[New Thread 0x7f804318c6e0 (LWP 15640)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f804318c6e0 (LWP 15640)]
0x0000000000000001 in ?? ()
(gdb) up
#1 0x0000000000403ae3 in importModules () at ../common/launch.c:665
665 Py_DECREF(mods);
(gdb) list
660 {
661 PI_PyErr_Print();
662 PI_PyErr_Clear();
663 }
664
665 Py_DECREF(mods);
666 free(modbuf);
667 }
668 ptoc = incrementTocPtr(ptoc);
669 }
(gdb) print *mods
$1 = {ob_refcnt = 0, ob_type = 0x7f8042147ea0}
(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 register
rax 0x7f8042147ea0 140188841180832
rbx 0x25be2b0 39576240
rcx 0x7f8043145000 140188857946112
rdx 0x7f804310a010 140188857704464
rsi 0x25bec60 39578720
rdi 0x262c460 40027232
rbp 0x25be2c2 0x25be2c2
rsp 0x7fff4b1bdab0 0x7fff4b1bdab0
r8 0x7f 127
r9 0x2 2
r10 0x2 2
r11 0x7f8041e6d480 140188838188160
r12 0x262c460 40027232
r13 0x25dc260 39699040
r14 0x7f804315a998 140188858034584
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 ]
(gdb) quit
The program is running. Exit anyway? (y or n)
### GDB END ###############################################
> If that's a normal string object created by PyString_FromStringAndSize
> and it's doing a normale DECREF, I can't see why it's crashing.
Some more info that could help you to reproduce the problem:
Ubuntu 8.10 on Macbook 3,1
$ uname .a
Linux mac1 2.6.27-11-generic #1 SMP Thu Jan 8 08:38:38 UTC 2009 x86_64
GNU/Linux
$ cat test.py
#!/usr/bin/env python
if __name__ == '__main__':
print 'Hello, world!'
$ cat test.spec
# -*- mode: python -*-
a = Analysis([os.path.join(HOMEPATH,'support/_mountzlib.py'),
os.path.join(HOMEPATH,'support/useUnicode.py'), 'test.py'],
pathex=['/home/antonio/tmp/pyinstaller-test'])
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
exclude_binaries=1,
name=os.path.join('build/pyi.linux2/test', 'test'),
debug=True,
strip=False,
upx=False,
console=1 )
coll = COLLECT( exe,
a.binaries,
a.zipfiles,
strip=False,
upx=False,
name=os.path.join('dist', 'test'))
$ ll dist/test/
totale 3464
-rwxr-xr-x 1 antonio antonio 42248 2008-10-05 23:00 array.so
-rwxr-xr-x 1 antonio antonio 24520 2008-10-05 23:00 binascii.so
-rwxr-xr-x 1 antonio antonio 38216 2008-10-05 23:00 bz2.so
-rwxr-xr-x 1 antonio antonio 149616 2008-10-05 23:00 _codecs_cn.so
-rwxr-xr-x 1 antonio antonio 153744 2008-10-05 23:00 _codecs_hk.so
-rwxr-xr-x 1 antonio antonio 22672 2008-10-05 23:00
_codecs_iso2022.so
-rwxr-xr-x 1 antonio antonio 264304 2008-10-05 23:00 _codecs_jp.so
-rwxr-xr-x 1 antonio antonio 133232 2008-10-05 23:00 _codecs_kr.so
-rwxr-xr-x 1 antonio antonio 108656 2008-10-05 23:00 _codecs_tw.so
-rwxr-xr-x 1 antonio antonio 22560 2008-10-05 23:00 cStringIO.so
-rwxr-xr-x 1 antonio antonio 41568 2008-10-05 23:00 itertools.so
-rwxr-xr-x 1 antonio antonio 1503296 2008-10-05 23:00 libpython2.5.so.
1.0
-rwxr-xr-x 1 antonio antonio 34792 2008-10-05 23:00
_multibytecodec.so
-rwxr-xr-x 1 antonio antonio 27456 2008-10-05 23:00 strop.so
-rwxr-xr-x 1 antonio antonio 34976 2008-10-05 23:00 _struct.so
-rwxr-xr-x 1 antonio antonio 366599 2009-01-10 11:48 test
-rwxr-xr-x 1 antonio antonio 483632 2008-10-05 23:00 unicodedata.so
-rwxr-xr-x 1 antonio antonio 22808 2008-10-05 23:00 zlib.so
$ ldd dist/test/test
linux-vdso.so.1 => (0x00007fff101fe000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007fd607bdd000)
libdl.so.2 => /lib/libdl.so.2 (0x00007fd6079d9000)
libutil.so.1 => /lib/libutil.so.1 (0x00007fd6077d6000)
libm.so.6 => /lib/libm.so.6 (0x00007fd607551000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007fd607339000)
libc.so.6 => /lib/libc.so.6 (0x00007fd606fc7000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd607df9000)
$ svn info ~/projects/extern/pyinstaller/
Percorso: /home/antonio/projects/extern/pyinstaller
URL: http://svn.pyinstaller.python-hosting.com/trunk
Repository: http://svn.pyinstaller.python-hosting.com
UUID del Repository: 8dd32b29-ccff-0310-8a9a-9233e24343b1
Revisione: 596
Tipo di Nodo: directory
Azione: normale
Autore dell'Ultimo Cambiamento: lmancini
Revisione dell'Ultimo Cambiamento: 592
Data dell'Ultimo Cambiamento: 2009-01-07 17:01:49 +0100 (mer, 07 gen
2009)
I can also provide an archive with the full pyinstaller directory
(config.dat binary files etc.)
and the fill test directory (duild and dist folders and pyinstaller
log files) about 4.7MB.
> --
> Giovanni Bajo
> Develer S.r.l.http://www.develer.com
ciao
--
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
-~----------~----~----~----~------~----~------~--~---