Ticket #168 (new defect)

Opened 3 years ago

Last modified 3 years ago

Stack overflow in regexp matcher

Reported by: xgoober99@hotmail.com Assigned to: developer
Priority: normal Milestone:
Component: Instiki Version: 0.10.0
Severity: normal Keywords:
Cc:

Description

Was editing a page (using Markdown) and putting in a large table (~30+ rows) with lots of special characters. Must have messed something up b/c it wouldn't save the edit; kept giving me an error. So I eventually just gave up. Now the database is in some bad state, and I can't get to any of the Wiki pages.

Is there any way to go back to a previous state of the database? Using version 0.10.1 actually.

Processing WikiController#show (for 127.0.0.1 at Fri May 13 10:50:18 Pacific Sta
ndard Time 2005)
  Parameters: {"action"=>"show", "id"=>"HomePage", "controller"=>"wiki", "web"=>
"wiki"}
Rendering wiki/page within layouts/default
Stack overflow in regexp matcher: /
                ^                                               # Start of line
                <(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script)    # start
tag: \2
                \b                                              # word break
                (.*\n)*?                                # Any number of lines, m
inimal match
                .*<\/\1>                                        # Anything + Mat
ching end tag
                [ ]*                                    # trailing spaces
                (?=\n+|\Z)                              # End of line or documen
t
          /ix (ActionView::TemplateError)
On line #81 of /wiki/page.rhtml

    78:   <% end %>
    79:   </small>
    80:
    81:   <% unless @page.linked_from.empty? %>
    82:     <small>
    83:       | Linked from:
    84:       <%= @page.linked_from.collect { |referring_page|

    /gems/instiki-0.10.1/lib/bluecloth_tweaked.rb:345:in `gsub!'
    /gems/instiki-0.10.1/lib/bluecloth_tweaked.rb:345:in `hide_html_blocks'
    /gems/instiki-0.10.1/lib/bluecloth_tweaked.rb:188:in `to_html'
    /gems/instiki-0.10.1/app/models/chunks/engines.rb:40:in `mask'
    /gems/instiki-0.10.1/app/models/chunks/engines.rb:17:in `apply_to'
    /gems/instiki-0.10.1/app/models/wiki_content.rb:169:in `build_chunks'
    /gems/instiki-0.10.1/app/models/wiki_content.rb:147:in `initialize'
    /gems/instiki-0.10.1/app/models/revision.rb:80:in `new'
    /gems/instiki-0.10.1/app/models/revision.rb:80:in `display_content'
    /gems/instiki-0.10.1/app/models/revision.rb:58:in `wiki_words'
    /gems/instiki-0.10.1/app/models/page.rb:109:in `send'
    /gems/instiki-0.10.1/app/models/page.rb:109:in `method_missing'
    /gems/instiki-0.10.1/app/models/page_set.rb:39:in `pages_that_link_to'
    /gems/instiki-0.10.1/app/models/page_set.rb:39:in `select'
    /gems/instiki-0.10.1/app/models/page_set.rb:39:in `pages_that_link_to'
    /gems/instiki-0.10.1/app/models/page.rb:76:in `linked_from'
    (erb):81:in `evaluate_locals'
    /gems/actionpack-1.8.1/lib/action_view/base.rb:265:in `evaluate_locals'
    /gems/actionpack-1.8.1/lib/action_view/base.rb:276:in `rhtml_render'
    /gems/actionpack-1.8.1/lib/action_view/base.rb:201:in `send'
    /gems/actionpack-1.8.1/lib/action_view/base.rb:201:in `render_template'
    /gems/actionpack-1.8.1/lib/action_view/base.rb:181:in `render_file'
    /gems/actionpack-1.8.1/lib/action_controller/layout.rb:208:in `render_withou
t_benchmark'
    /gems/actionpack-1.8.1/lib/action_controller/benchmarking.rb:23:in `render'
    /gems/actionpack-1.8.1/lib/action_controller/benchmarking.rb:23:in `measure'

    /gems/actionpack-1.8.1/lib/action_controller/benchmarking.rb:23:in `render'
    /gems/actionpack-1.8.1/lib/action_controller/base.rb:447:in `render_action'
    /gems/instiki-0.10.1/app/controllers/wiki_controller.rb:203:in `show'
    /gems/actionpack-1.8.1/lib/action_controller/base.rb:708:in `send'
    /gems/actionpack-1.8.1/lib/action_controller/base.rb:708:in `perform_action_
without_filters'
    /gems/actionpack-1.8.1/lib/action_controller/filters.rb:294:in `perform_acti
on_without_benchmark'
    /gems/actionpack-1.8.1/lib/action_controller/benchmarking.rb:37:in `perform_
action_without_rescue'
    /gems/actionpack-1.8.1/lib/action_controller/benchmarking.rb:37:in `measure'

    /gems/actionpack-1.8.1/lib/action_controller/benchmarking.rb:37:in `perform_
action_without_rescue'
    /gems/actionpack-1.8.1/lib/action_controller/rescue.rb:79:in `perform_action
'
    /gems/actionpack-1.8.1/lib/action_controller/base.rb:330:in `send'
    /gems/actionpack-1.8.1/lib/action_controller/base.rb:330:in `process'
    /gems/actionpack-1.8.1/lib/action_controller/base.rb:273:in `process'
    /gems/rails-0.12.1/lib/dispatcher.rb:32:in `dispatch'
    /gems/instiki-0.10.1/public/dispatch.rb:10
    /gems/activesupport-1.0.4/lib/active_support/dependencies.rb:189:in `load'
    /gems/activesupport-1.0.4/lib/active_support/dependencies.rb:189:in `load'
    /gems/rails-0.12.1/lib/webrick_server.rb:82:in `handle_dispatch'
    /gems/rails-0.12.1/lib/webrick_server.rb:35:in `service'
    C:/bin/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
    C:/bin/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
    C:/bin/ruby/lib/ruby/1.8/webrick/server.rb:155:in `start_thread'
    C:/bin/ruby/lib/ruby/1.8/webrick/server.rb:144:in `start'
    C:/bin/ruby/lib/ruby/1.8/webrick/server.rb:144:in `start_thread'
    C:/bin/ruby/lib/ruby/1.8/webrick/server.rb:94:in `start'
    C:/bin/ruby/lib/ruby/1.8/webrick/server.rb:89:in `each'
    C:/bin/ruby/lib/ruby/1.8/webrick/server.rb:89:in `start'
    C:/bin/ruby/lib/ruby/1.8/webrick/server.rb:79:in `start'
    C:/bin/ruby/lib/ruby/1.8/webrick/server.rb:79:in `start'
    /gems/rails-0.12.1/lib/webrick_server.rb:21:in `dispatch'
    /gems/instiki-0.10.1/script/server:92
    /gems/instiki-0.10.1/instiki:6:in `load'
    /gems/instiki-0.10.1/instiki:6

Attachments

000000000000000000011.snapshot (11.5 kB) - added by anonymous on 05/13/05 18:01:43.
latest storage file

Change History

05/13/05 18:01:43 changed by anonymous

  • attachment 000000000000000000011.snapshot added.

latest storage file

08/11/05 01:04:51 changed by ged@FaerieMUD.org

This is a (known) limitation of Ruby's regex engine. Essentially, the match engine runs out of stack space because the regexps used to find the end of nested constructs can have a lot of backtracking and recursion. I'm writing a parsing engine (I'm the author of BlueCloth?) that doesn't depend on so many complex regexps, which will hopefully fix all such problems.