Page MenuHomePhabricator

checkimages.py hangs when putting a file page
Closed, InvalidPublic

Description

checkimages.py hangs when taggoing a file page while consuming 100% of CPU

Teatr dach meerdorf1.jpg has only text and not the specific license...
@@ -0,0 +1 @@
+ {{Dateiüberprüfung}}

Bot: Markiere mit {{[[Wikipedia:Dateiüberprüfung/Anleitung|DÜP]]}}, da keine Liz
enzvorlage gefunden — bitte nicht entfernen, Informationen bald auf der Benutzer
diskussion des Uploaders.

Event Timeline

Xqt triaged this task as Medium priority.Mar 30 2018, 11:44 AM
Xqt raised the priority of this task from Medium to High.

Seems there is something wrong with cosmetic changes

Xqt removed Xqt as the assignee of this task.Mar 30 2018, 1:02 PM
Xqt added a subscriber: Dalba.

I found out that error occures in cosmetic_changes.translateMagicWords() when calling

text = textlib.replaceExcept(text, regex, replace_magicword,
                             exceptions)

and inside replaceExcept that line

if not old.search(text):

doesn't comes to an end.

Seems that FILE_LINK_REGEX

\[\[\s*(?:Datei|File|Image|Bild)\s*:[^|]*?\s*
  (\|
    ( ( \[\[ .*? \]\] )? [^[]*?
     | \[ [^]]*? \]
    )*
  )?
\]\]

is too greedy and doesn't doesn't find any result in short time for following content:

== Beschreibung, Quelle ==
{{Information
|Beschreibung     = teatr dach Meerdorf
|Quelle           = Albrecht Schultze
|Urheber          = Albrecht Schultze
|Datum            = 
|Genehmigung      = ja
|Andere Versionen = 
|Anmerkungen      = Ich erkläre in Bezug auf das Bild {{{[[Datei:teatr_dach_meerdorf1.jpg|}}} {{{Teatr dach Meerdorf}}}, dass ich dessen Fotograf bin.

Ich erlaube hiermit jedermann die Weiternutzung des Bildes unter der freien Lizenz „Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 4.0“ (http://creativecommons.org/licenses/by-sa/4.0/deed.de).

Ich gewähre somit in urheberrechtlicher Hinsicht Dritten das Recht, das Bild (auch gewerblich) zu nutzen und zu verändern, sofern sie die Lizenzbedingungen wahren. Mir ist bekannt, dass ich diese Einwilligung üblicherweise nicht widerrufen kann.

Mir ist bekannt, dass sich die Unterstellung unter eine freie Lizenz nur auf das Urheberrecht bezieht und es mir daher unbenommen ist, aufgrund anderer Gesetze (Persönlichkeitsrecht, Markenrecht usw.) gegen Dritte vorzugehen, die das Bild im Rahmen der freien Lizenz rechtmäßig, aufgrund der anderen Gesetze aber unrechtmäßig nutzen.

Gleichwohl erwerbe ich keinen Anspruch darauf, dass das Bild dauerhaft auf der Wikipedia eingestellt wird.

{{{15.03.2018}}, {{{Albrecht Schultze}}}

}}

Sure that text contains something like a file link but closing brackets are missing

btw reverting 7d79fa434e5f14559e4a5ce065ed2d6c6727b9d1 doesn't solve this issue.

Change 423243 had a related patch set uploaded (by Dalba; owner: Dalba):
[pywikibot/core@master] textlib.py: Rewrite FILE_LINK_REGEX to use atomic groups

https://gerrit.wikimedia.org/r/423243

Another case of catastrophic backtracking. This is what happens when we try to parse a context-free language with regular expressions, the ultimate solution is to try using a real parser like mwparserfromhell...
The above patch should fix this specific case, but I have not tested it thoroughly.

Xqt claimed this task.

Change 423243 merged by jenkins-bot:
[pywikibot/core@master] textlib.py: Rewrite FILE_LINK_REGEX to use atomic groups

https://gerrit.wikimedia.org/r/423243

Dalba reopened this task as Open.EditedApr 2 2018, 11:23 AM
Dalba removed Dalba as the assignee of this task.

With the merge of c25f22164f88b1bf91dd329d0566afed685ce530, this issue will continue to happen on 2.7.2 and 2.7.3. We have not found any better solution yet.

This task will become invalid as soon is we are done with T191192: Drop support for python 2.7.2 and 2.7.3 (unless someone finds a solution till then of coarse).

Dalba lowered the priority of this task from High to Medium.Apr 2 2018, 11:24 AM

Python 2.7.2 and 2.7.3 has been dropped