minidom + wxPython woes

  • Thread starter Lonnie Princehouse
  • Start date
L

Lonnie Princehouse

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()
 
L

Lonnie Princehouse

Oops, I missed a bracket... that should read:

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

But it still crashes ;-)
 
P

Peter Hansen

Lonnie said:
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
 
F

Frank Millman

Lonnie said:
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...f493f3c38942?q=&rnum=1&hl=en#5fbdf493f3c38942

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
 
F

Fredrik Lundh

Frank said:
This sounds similar to a problem I reported a few months ago. This is
the link.
http://groups.google.com/group/comp...f493f3c38942?q=&rnum=1&hl=en#5fbdf493f3c38942

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>
 
F

Frank Millman

Fredrik said:
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
 
P

Paul Boddie

Frank said:
Fredrik said:
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
 
L

Lonnie Princehouse

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
 
G

grahamd

Paul said:
Frank said:
Fredrik said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,071
Latest member
MetabolicSolutionsKeto

Latest Threads

Top