Markdown-Edit icon indicating copy to clipboard operation
Markdown-Edit copied to clipboard

Markdown freezes for big markdown files

Open seperman opened this issue 9 years ago • 10 comments

When opening relatively big markdown files, like over 300kb, Markdown freezes. I pinpointed it to Pandoc. So basically I open the big markdown file, markdown freezes, then I kill the pandoc process, markdown works. This is happening on Markdown v1.25.1 It was working on older Markdown but unfortunately I don't remember the version.

I tried it with 2 versions of pandoc: 1.14.0.1 and 1.17.0.2 and it did still freeze with both.

seperman avatar Apr 13 '16 21:04 seperman

Could be the contents of the file and not the size. I often open files of around 200kb without issue. Does it freeze using the Commonmark engine?

mike-ward avatar Apr 13 '16 21:04 mike-ward

How can I switch to Commonmark engine?

seperman avatar Apr 15 '16 02:04 seperman

Disable GitHub markdown in the settings.

image

mike-ward avatar Apr 15 '16 13:04 mike-ward

Yes, it works if I switch to Commonmark engine.

seperman avatar Apr 27 '16 07:04 seperman

Can you send me the document that causes this issue?

mike-ward avatar Jul 11 '16 23:07 mike-ward

@mike-ward I narrowed down the cause to be html copied into markdown (which is supported by markdown from my understanding).

Here is exactly the piece that is causing Pandoc to hang:





#### Infinite Iterators
<table border="1" class="docutils">
<colgroup>
<col width="14%">
<col width="14%">
<col width="39%">
<col width="33%">
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Iterator</th>
<th class="head">Arguments</th>
<th class="head">Results</th>
<th class="head">Example</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td><a class="reference internal" href="#itertools.count" title="itertools.count"><tt class="xref py py-func docutils literal"><span class="pre">count()</span></tt></a></td>
<td>start, [step]</td>
<td>start, start+step, start+2*step, ...</td>
<td><tt class="docutils literal"><span class="pre">count(10)</span> <span class="pre">--&gt;</span> <span class="pre">10</span> <span class="pre">11</span> <span class="pre">12</span> <span class="pre">13</span> <span class="pre">14</span> <span class="pre">...</span></tt></td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#itertools.cycle" title="itertools.cycle"><tt class="xref py py-func docutils literal"><span class="pre">cycle()</span></tt></a></td>
<td>p</td>
<td>p0, p1, ... plast, p0, p1, ...</td>
<td><tt class="docutils literal"><span class="pre">cycle('ABCD')</span> <span class="pre">--&gt;</span> <span class="pre">A</span> <span class="pre">B</span> <span class="pre">C</span> <span class="pre">D</span> <span class="pre">A</span> <span class="pre">B</span> <span class="pre">C</span> <span class="pre">D</span> <span class="pre">...</span></tt></td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#itertools.repeat" title="itertools.repeat"><tt class="xref py py-func docutils literal"><span class="pre">repeat()</span></tt></a></td>
<td>elem [,n]</td>
<td>elem, elem, elem, ... endlessly or up to n times</td>
<td><tt class="docutils literal"><span class="pre">repeat(10,</span> <span class="pre">3)</span> <span class="pre">--&gt;</span> <span class="pre">10</span> <span class="pre">10</span> <span class="pre">10</span></tt></td>
</tr>
</tbody>
</table>

#### Iterators terminating on the shortest input sequence

<table border="1" class="docutils">
<colgroup>
<col width="13%">
<col width="18%">
<col width="31%">
<col width="39%">
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Iterator</th>
<th class="head">Arguments</th>
<th class="head">Results</th>
<th class="head">Example</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td><a class="reference internal" href="#itertools.chain" title="itertools.chain"><tt class="xref py py-func docutils literal"><span class="pre">chain()</span></tt></a></td>
<td>p, q, ...</td>
<td>p0, p1, ... plast, q0, q1, ...</td>
<td><tt class="docutils literal"><span class="pre">chain('ABC',</span> <span class="pre">'DEF')</span> <span class="pre">--&gt;</span> <span class="pre">A</span> <span class="pre">B</span> <span class="pre">C</span> <span class="pre">D</span> <span class="pre">E</span> <span class="pre">F</span></tt></td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#itertools.compress" title="itertools.compress"><tt class="xref py py-func docutils literal"><span class="pre">compress()</span></tt></a></td>
<td>data, selectors</td>
<td>(d[0] if s[0]), (d[1] if s[1]), ...</td>
<td><tt class="docutils literal"><span class="pre">compress('ABCDEF',</span> <span class="pre">[1,0,1,0,1,1])</span> <span class="pre">--&gt;</span> <span class="pre">A</span> <span class="pre">C</span> <span class="pre">E</span> <span class="pre">F</span></tt></td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#itertools.dropwhile" title="itertools.dropwhile"><tt class="xref py py-func docutils literal"><span class="pre">dropwhile()</span></tt></a></td>
<td>pred, seq</td>
<td>seq[n], seq[n+1], starting when pred fails</td>
<td><tt class="docutils literal"><span class="pre">dropwhile(lambda</span> <span class="pre">x:</span> <span class="pre">x&lt;5,</span> <span class="pre">[1,4,6,4,1])</span> <span class="pre">--&gt;</span> <span class="pre">6</span> <span class="pre">4</span> <span class="pre">1</span></tt></td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#itertools.groupby" title="itertools.groupby"><tt class="xref py py-func docutils literal"><span class="pre">groupby()</span></tt></a></td>
<td>iterable[, keyfunc]</td>
<td>sub-iterators grouped by value of keyfunc(v)</td>
<td>&nbsp;</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#itertools.ifilter" title="itertools.ifilter"><tt class="xref py py-func docutils literal"><span class="pre">ifilter()</span></tt></a></td>
<td>pred, seq</td>
<td>elements of seq where pred(elem) is true</td>
<td><tt class="docutils literal"><span class="pre">ifilter(lambda</span> <span class="pre">x:</span> <span class="pre">x%2,</span> <span class="pre">range(10))</span> <span class="pre">--&gt;</span> <span class="pre">1</span> <span class="pre">3</span> <span class="pre">5</span> <span class="pre">7</span> <span class="pre">9</span></tt></td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#itertools.ifilterfalse" title="itertools.ifilterfalse"><tt class="xref py py-func docutils literal"><span class="pre">ifilterfalse()</span></tt></a></td>
<td>pred, seq</td>
<td>elements of seq where pred(elem) is false</td>
<td><tt class="docutils literal"><span class="pre">ifilterfalse(lambda</span> <span class="pre">x:</span> <span class="pre">x%2,</span> <span class="pre">range(10))</span> <span class="pre">--&gt;</span> <span class="pre">0</span> <span class="pre">2</span> <span class="pre">4</span> <span class="pre">6</span> <span class="pre">8</span></tt></td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#itertools.islice" title="itertools.islice"><tt class="xref py py-func docutils literal"><span class="pre">islice()</span></tt></a></td>
<td>seq, [start,] stop [, step]</td>
<td>elements from seq[start:stop:step]</td>
<td><tt class="docutils literal"><span class="pre">islice('ABCDEFG',</span> <span class="pre">2,</span> <span class="pre">None)</span> <span class="pre">--&gt;</span> <span class="pre">C</span> <span class="pre">D</span> <span class="pre">E</span> <span class="pre">F</span> <span class="pre">G</span></tt></td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#itertools.imap" title="itertools.imap"><tt class="xref py py-func docutils literal"><span class="pre">imap()</span></tt></a></td>
<td>func, p, q, ...</td>
<td>func(p0, q0), func(p1, q1), ...</td>
<td><tt class="docutils literal"><span class="pre">imap(pow,</span> <span class="pre">(2,3,10),</span> <span class="pre">(5,2,3))</span> <span class="pre">--&gt;</span> <span class="pre">32</span> <span class="pre">9</span> <span class="pre">1000</span></tt></td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#itertools.starmap" title="itertools.starmap"><tt class="xref py py-func docutils literal"><span class="pre">starmap()</span></tt></a></td>
<td>func, seq</td>
<td>func(*seq[0]), func(*seq[1]), ...</td>
<td><tt class="docutils literal"><span class="pre">starmap(pow,</span> <span class="pre">[(2,5),</span> <span class="pre">(3,2),</span> <span class="pre">(10,3)])</span> <span class="pre">--&gt;</span> <span class="pre">32</span> <span class="pre">9</span> <span class="pre">1000</span></tt></td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#itertools.tee" title="itertools.tee"><tt class="xref py py-func docutils literal"><span class="pre">tee()</span></tt></a></td>
<td>it, n</td>
<td>it1, it2, ... itn  splits one iterator into n</td>
<td>&nbsp;</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#itertools.takewhile" title="itertools.takewhile"><tt class="xref py py-func docutils literal"><span class="pre">takewhile()</span></tt></a></td>
<td>pred, seq</td>
<td>seq[0], seq[1], until pred fails</td>
<td><tt class="docutils literal"><span class="pre">takewhile(lambda</span> <span class="pre">x:</span> <span class="pre">x&lt;5,</span> <span class="pre">[1,4,6,4,1])</span> <span class="pre">--&gt;</span> <span class="pre">1</span> <span class="pre">4</span></tt></td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#itertools.izip" title="itertools.izip"><tt class="xref py py-func docutils literal"><span class="pre">izip()</span></tt></a></td>
<td>p, q, ...</td>
<td>(p[0], q[0]), (p[1], q[1]), ...</td>
<td><tt class="docutils literal"><span class="pre">izip('ABCD',</span> <span class="pre">'xy')</span> <span class="pre">--&gt;</span> <span class="pre">Ax</span> <span class="pre">By</span></tt></td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#itertools.izip_longest" title="itertools.izip_longest"><tt class="xref py py-func docutils literal"><span class="pre">izip_longest()</span></tt></a></td>
<td>p, q, ...</td>
<td>(p[0], q[0]), (p[1], q[1]), ...</td>
<td><tt class="docutils literal"><span class="pre">izip_longest('ABCD',</span> <span class="pre">'xy',</span> <span class="pre">fillvalue='-')</span> <span class="pre">--&gt;</span> <span class="pre">Ax</span> <span class="pre">By</span> <span class="pre">C-</span> <span class="pre">D-</span></tt></td>
</tr>
</tbody>
</table>

#### Combinatoric generators
<table border="1" class="docutils">
<colgroup>
<col width="36%">
<col width="16%">
<col width="48%">
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Iterator</th>
<th class="head">Arguments</th>
<th class="head">Results</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td><a class="reference internal" href="#itertools.product" title="itertools.product"><tt class="xref py py-func docutils literal"><span class="pre">product()</span></tt></a></td>
<td>p, q, ... [repeat=1]</td>
<td>cartesian product, equivalent to a nested for-loop</td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#itertools.permutations" title="itertools.permutations"><tt class="xref py py-func docutils literal"><span class="pre">permutations()</span></tt></a></td>
<td>p[, r]</td>
<td>r-length tuples, all possible orderings, no repeated elements</td>
</tr>
<tr class="row-even"><td><a class="reference internal" href="#itertools.combinations" title="itertools.combinations"><tt class="xref py py-func docutils literal"><span class="pre">combinations()</span></tt></a></td>
<td>p, r</td>
<td>r-length tuples, in sorted order, no repeated elements</td>
</tr>
<tr class="row-odd"><td><a class="reference internal" href="#itertools.combinations_with_replacement" title="itertools.combinations_with_replacement"><tt class="xref py py-func docutils literal"><span class="pre">combinations_with_replacement()</span></tt></a></td>
<td>p, r</td>
<td>r-length tuples, in sorted order, with repeated elements</td>
</tr>
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">product('ABCD',</span> <span class="pre">repeat=2)</span></tt></td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">AA</span> <span class="pre">AB</span> <span class="pre">AC</span> <span class="pre">AD</span> <span class="pre">BA</span> <span class="pre">BB</span> <span class="pre">BC</span> <span class="pre">BD</span> <span class="pre">CA</span> <span class="pre">CB</span> <span class="pre">CC</span> <span class="pre">CD</span> <span class="pre">DA</span> <span class="pre">DB</span> <span class="pre">DC</span> <span class="pre">DD</span></tt></td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">permutations('ABCD',</span> <span class="pre">2)</span></tt></td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">AB</span> <span class="pre">AC</span> <span class="pre">AD</span> <span class="pre">BA</span> <span class="pre">BC</span> <span class="pre">BD</span> <span class="pre">CA</span> <span class="pre">CB</span> <span class="pre">CD</span> <span class="pre">DA</span> <span class="pre">DB</span> <span class="pre">DC</span></tt></td>
</tr>
<tr class="row-even"><td><tt class="docutils literal"><span class="pre">combinations('ABCD',</span> <span class="pre">2)</span></tt></td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">AB</span> <span class="pre">AC</span> <span class="pre">AD</span> <span class="pre">BC</span> <span class="pre">BD</span> <span class="pre">CD</span></tt></td>
</tr>
<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">combinations_with_replacement('ABCD',</span> <span class="pre">2)</span></tt></td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">AA</span> <span class="pre">AB</span> <span class="pre">AC</span> <span class="pre">AD</span> <span class="pre">BB</span> <span class="pre">BC</span> <span class="pre">BD</span> <span class="pre">CC</span> <span class="pre">CD</span> <span class="pre">DD</span></tt></td>
</tr>
</tbody>
</table>

seperman avatar Aug 02 '16 04:08 seperman

Thanks for the followup. I'll have a look.

mike-ward avatar Aug 02 '16 12:08 mike-ward

Is there something special I need to do? I copied/pasted this into MDE (using GitHub engine) without issue.

mike-ward avatar Aug 07 '16 15:08 mike-ward

What version of Pandoc are you using?

seperman avatar Aug 10 '16 16:08 seperman

1.17.0.2

mike-ward avatar Aug 10 '16 18:08 mike-ward