469,265 Members | 1,966 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,265 developers. It's quick & easy.

minidom + wxPython woes

Hi all,

I'm getting a seg fault when I try to use minidom to parse some XML
inside a wxPython app.

I was wondering if someone else could run the simple code below on
Linux and, if it doesn't crash horribly, post which versions of
(Python, wxPython) they are using? I can't find other messages related
to this, so I suspect it is something broken with my installation.
I'm using Python 2.4.2 and wx 2.6.1.0.

Incidentally, writing XML with minidom works fine, and this is all
happening in wxPython's main thread.
import wx
from xml.dom import minidom

app = wx.PySimpleApp()
frame = wx.Frame(None, -1, "Hello World")
frame.Show(True)
button = wx.Button(frame, -1, "Click me")

testxml = 'xml version="1.0" ?><foo></foo>'

def click(event):
doc = minidom.parseString(testxml) # seg fault?!
print "Success!"

frame.Bind(wx.EVT_BUTTON, click, button)

app.MainLoop()

Apr 7 '06 #1
9 1483
Oops, I missed a bracket... that should read:

testxml = '<xml version="1.0" ?><foo></foo>'

But it still crashes ;-)

Apr 7 '06 #2
Lonnie Princehouse wrote:
Oops, I missed a bracket... that should read:

testxml = '<xml version="1.0" ?><foo></foo>'

But it still crashes ;-)


Maybe missing a question mark still too?

<?xml version="1.0"?>

(It's like a processing instruction, not an element.)

-Peter

Apr 8 '06 #3

Lonnie Princehouse wrote:
Hi all,

I'm getting a seg fault when I try to use minidom to parse some XML
inside a wxPython app.

I was wondering if someone else could run the simple code below on
Linux and, if it doesn't crash horribly, post which versions of
(Python, wxPython) they are using? I can't find other messages related
to this, so I suspect it is something broken with my installation.
I'm using Python 2.4.2 and wx 2.6.1.0.

Incidentally, writing XML with minidom works fine, and this is all
happening in wxPython's main thread.
import wx
from xml.dom import minidom

app = wx.PySimpleApp()
frame = wx.Frame(None, -1, "Hello World")
frame.Show(True)
button = wx.Button(frame, -1, "Click me")

testxml = 'xml version="1.0" ?><foo></foo>'

def click(event):
doc = minidom.parseString(testxml) # seg fault?!
print "Success!"

frame.Bind(wx.EVT_BUTTON, click, button)

app.MainLoop()


This sounds similar to a problem I reported a few months ago. This is
the link.

http://groups.google.com/group/comp....bdf493f3c38942

In my case, it turned out to be a bug in the pyexpat module - it is
known about, but for some reason difficult to fix, so it is still
there.

I found a workaround, which is documented in the above thread.

HTH

Frank Millman

Apr 8 '06 #4
Frank Millman wrote:
This sounds similar to a problem I reported a few months ago. This is
the link.
http://groups.google.com/group/comp....bdf493f3c38942
In my case, it turned out to be a bug in the pyexpat module - it is
known about, but for some reason difficult to fix, so it is still
there.


no, it's not a bug in the pyexpat module -- the problem is that
wxPython uses it's own incompatible version of the expat library,
and loads it in a way that causes problems for any library that's
tries to use its own statically linked version.

see MvL's comments in the sourceforge tracker for more info.

</F>

Apr 8 '06 #5

Fredrik Lundh wrote:
Frank Millman wrote:
This sounds similar to a problem I reported a few months ago. This is
the link.

http://groups.google.com/group/comp....bdf493f3c38942

In my case, it turned out to be a bug in the pyexpat module - it is
known about, but for some reason difficult to fix, so it is still
there.


no, it's not a bug in the pyexpat module -- the problem is that
wxPython uses it's own incompatible version of the expat library,
and loads it in a way that causes problems for any library that's
tries to use its own statically linked version.

see MvL's comments in the sourceforge tracker for more info.

</F>


I had a look at the sourceforge tracker. I did not understand much of
it - rather too technical for me. There are two points worth noting.

Firstly, it seems from various posts to the tracker item that the same
problem has been reported with pygtk, Qt, and VTK.

Secondly, in tracker item 1295808 (which, according to the notes, is
actually the same bug), there is talk of submitting a patch in 2.5 to
address the issue.

It seems to me (FWIW - as I said, I do not really understand much of
what I read) that it may not technically be a bug in pyexpat, but there
is a real issue there, and the decision has been taken to make a change
to pyexpat so that the problem will not arise in the future.

Frank

Apr 8 '06 #6
Frank Millman wrote:
Fredrik Lundh wrote:

no, it's not a bug in the pyexpat module -- the problem is that
wxPython uses it's own incompatible version of the expat library,
and loads it in a way that causes problems for any library that's
tries to use its own statically linked version.

[...]
Firstly, it seems from various posts to the tracker item that the same
problem has been reported with pygtk, Qt, and VTK.


There used to be issues with Expat, PyXML and mod_python which may be
vaguely related to this, mostly because there was some usage of Expat
within some Apache component which conflicted with PyXML's Expat
configuration. In the end, I just dropped PyXML and started using other
libraries not affected by such issues, and I'm not totally sure that
anyone really resolved the problem definitively (although this was
possibly four or five years ago, so a lot can have happened since).

Paul

Apr 8 '06 #7
I'm hesitant to resort to tricks like "import pyexpat before wx, so
that symbols are loaded from the right library".

Luckily, I stumbled onto pxdom. It's a pure-python DOM implementation,
and switching to it was as easy as this:

# import xml.dom.minidom as dom
import pxdom as dom

Apr 10 '06 #8
Paul Boddie wrote:
Frank Millman wrote:
Fredrik Lundh wrote:

no, it's not a bug in the pyexpat module -- the problem is that
wxPython uses it's own incompatible version of the expat library,
and loads it in a way that causes problems for any library that's
tries to use its own statically linked version.


[...]
Firstly, it seems from various posts to the tracker item that the same
problem has been reported with pygtk, Qt, and VTK.


There used to be issues with Expat, PyXML and mod_python which may be
vaguely related to this, mostly because there was some usage of Expat
within some Apache component which conflicted with PyXML's Expat
configuration.


FYI, the incompatibility issues that arise with pyexpat in mod_python
are well documented at:

http://www.dscpl.com.au/articles/modpython-006.html

Graham

Apr 11 '06 #9
grah...@dscpl.com.au wrote:

FYI, the incompatibility issues that arise with pyexpat in mod_python
are well documented at:

http://www.dscpl.com.au/articles/modpython-006.html


Nice document! Is there some possibly-similar explanation of character
encoding issues with mod_python and Expat somewhere, too, or is that
problem long forgotten?

Paul

Apr 11 '06 #10

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

reply views Thread by xtian | last post: by
5 posts views Thread by Mike McGavin | last post: by
4 posts views Thread by webdev | last post: by
reply views Thread by linuxfreak | last post: by
reply views Thread by Gary | last post: by
3 posts views Thread by aine_canby | last post: by
2 posts views Thread by ashmir.d | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by zhoujie | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.