Skip to content

ill formed XML #237

Open
Open

Description

@Matafou

Hi,
When using pg/xml on a large file I get a "ill formed xml" message, see attached file. Sorry I did not manage to minimize the example yet. I will try.
P.

illformedXML.txt

Activity

  1. Matafou commented on Mar 3, 2018

    @Matafou
    ContributorAuthor

    @psteckler can you just see what part of the xml is wrong please?

  2. psteckler commented on Mar 3, 2018

    @psteckler
    Collaborator

    I could not find an error in the text. Emacs nXML mode does not report an error. Also, I used the XML validator at https://www.w3schools.com/xml/xml_validator.asp, and it reports no errors.

    It is possible that the error message was caused by some other issue, which I'll have to investigate.

  3. added
    pg: asyncRelated to (unmaintained) async PG with asynchronous Coq proofs
    on Mar 3, 2018
  4. psteckler commented on Mar 5, 2018

    @psteckler
    Collaborator

    I ran the Elisp/libxml parser on that string and it successfully created an S-exp. In fact, I called the function I wrote that wraps the parser, which deletes the contents of the buffer if the parse is successful. After parsing, I verified that the buffer size is 0.

    That message box is guarded by a check for a nonempty buffer. So I don't understand why that message box appears.

    Is the problem reproducible?

  5. psteckler commented on Mar 5, 2018

    @psteckler
    Collaborator

    Maybe there's a race condition:

    • there's a successful parse
    • data fills the buffer before the next parse
  6. psteckler commented on Mar 5, 2018

    @psteckler
    Collaborator

    Working on a fix for that possibility.

  7. psteckler commented on Mar 5, 2018

    @psteckler
    Collaborator

    Actually, it's not clear to me why a race might happen, because

    • after the XML is parsed, the buffer is erased, which prevents the "ill-formed" message from appearing
    • the buffer is filled by code called from the filter function, which cannot be called until Emacs is waiting
    • so the code that parses the XML cannot be called again while it is pending

    In any case, I created #341, which uses temp buffers for XML parsing, instead of a dedicated buffer, if in fact the buffer gets additional data, somehow. If the issue can be reproduced, we can see if this fixes the problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    pg: asyncRelated to (unmaintained) async PG with asynchronous Coq proofs

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions