In case it might help, here is my trace back file and the controller (I am doing a manual insert, maybe I should not ?) :
## CONTROLLER STARTS HERE form = SQLFORM(db.fichiers, fields=['nom_fichier', 'fichier', 'project', 'description', 'users', 'deleted']) if form.validate(): form.vars.create_date = str(datetime.datetime.today().date()) form.vars.create_time = str(datetime.datetime.today().time()) form.vars.id = db.fichiers.insert(**dict(form.vars)) ## CONTROLLER ENDS HERE ## START TRACEBACK (dp1 S'output' p2 S"<type 'exceptions.MemoryError'> " p3 sS'layer' p4 S'/var/opt/app/applications/init/views/default/fichiers.html' p5 sS'code' p6 S'left_sidebar_enabled,right_sidebar_enabled=False,True\nresponse.write(\'\\n\', escape=False)\nresponse.write(\'<!DOCTYPE html>\\n<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/-->\\n<!--[if lt IE 7]><html class="ie ie6 ie-lte9 ie-lte8 ie-lte7 no-js" lang="\', escape=False)\nresponse.write(T.accepted_language or \'en\')\nresponse.write(\'"> <![endif]-->\\n<!--[if IE 7]><html class="ie ie7 ie-lte9 ie-lte8 ie-lte7 no-js" lang="\', escape=False)\nresponse.write(T.accepted_language or \'en\')\nresponse.write(\'"> <![endif]-->\\n<!--[if IE 8]><html class="ie ie8 ie-lte9 ie-lte8 no-js" lang="\', escape=False)\nresponse.write(T.accepted_language or \'en\')\nresponse.write(\'"> <![endif]-->\\n<!--[if IE 9]><html class="ie9 ie-lte9 no-js" lang="\', escape=False)\nresponse.write(T.accepted_language or \'en\')\nresponse.write(\'"> <![endif]-->\\n<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="\', escape=False)\nresponse.write(T.accepted_language or \'en\')\nresponse.write(\'"> <!--<![endif]-->\\n<head>\\n <meta charset="utf-8" />\\n <!-- www.phpied.com/conditional-comments-block-downloads/ -->\\n <!-- Always force latest IE rendering engine\\n\\t (even in intranet) & Chrome Frame\\n\\t Remove this if you use the .htaccess -->\\n <!--[if IE]>\\n <meta http-equiv="X-UA-Compatible" content="IE=edge\', escape=False)\nresponse.write(not request.is_local and \',chrome=1\' or \'\')\nresponse.write(\'">\\n <![endif]-->\\n \\n <title>\', escape=False)\nresponse.write(response.title or request.application)\nresponse.write(\'</title>\\n \\n <!-- http://dev.w3.org/html5/markup/meta.name.html -->\\n <meta name="application-name" content="\', escape=False)\nresponse.write(request.application)\nresponse.write(\'" />\\n \\n <!-- Speaking of Google, don\\\'t forget to set your site up:\\n\\t http://google.com/webmasters -->\\n <meta name="google-site-verification" content="" />\\n\\n <!-- Mobile Viewport Fix\\n\\t j.mp/mobileviewport & davidbcalhoun.com/2010/viewport-metatag\\n\\t device-width: Occupy full width of the screen in its current orientation\\n\\t initial-scale = 1.0 retains dimensions instead of zooming out if page height > device height\\n\\t user-scalable = yes allows the user to zoom in -->\\n <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">\\n \\n <!-- Place favicon.ico and apple-touch-icon.png in the root of your domain and delete these references -->\\n <link rel="shortcut icon" href="\', escape=False)\nresponse.write(URL(\'static\',\'favicon.ico\'))\nresponse.write(\'" type="image/x-icon">\\n <link rel="apple-touch-icon" href="\', escape=False)\nresponse.write(URL(\'static\',\'favicon.png\'))\nresponse.write(\'">\\n\\n <!-- All JavaScript at the bottom, except for Modernizr which enables \\n\\t HTML5 elements & feature detects -->\\n <script src="\', escape=False)\nresponse.write(URL(\'static\',\'js/modernizr.custom.js\'))\nresponse.write(\'"></script> \\n\\n <!-- include stylesheets -->\\n \', escape=False)\nresponse.files.append(URL(\'static\',\'css/skeleton.css\'))\nresponse.files.append(URL(\'static\',\'css/web2py.css\'))\nresponse.files.append(URL(\'static\',\'css/archimanager.css\'))\nif response.menu:\n response.files.append(URL(\'static\',\'css/superfish.css\'))\n response.files.append(URL(\'static\',\'js/superfish.js\'))\n pass\nresponse.write(\'\\n\\n \', escape=False)\nresponse.write(\'<script type="text/javascript"><!--\\n // These variables are used by the web2py_ajax_init function in web2py_ajax.js (which is loaded below).\\n var w2p_ajax_confirm_message = "\', escape=False)\nresponse.write(T(\'Are you sure you want to delete this object?\'))\nresponse.write(\'";\\n var w2p_ajax_date_format = "\', escape=False)\nresponse.write(T(\'%Y-%m-%d\'))\nresponse.write(\'";\\n var w2p_ajax_datetime_format = "\', escape=False)\nresponse.write(T(\'%Y-%m-%d %H:%M:%S\'))\nresponse.write(\'";\\n //--></script>\\n\', escape=False)\nresponse.files.insert(0,URL(\'static\',\'js/jquery.js\'))\nresponse.files.insert(1,URL(\'static\',\'css/calendar.css\'))\nresponse.files.insert(2,URL(\'static\',\'js/calendar.js\'))\nresponse.files.insert(3,URL(\'static\',\'js/web2py.js\'))\nresponse.include_meta()\nresponse.include_files()\nresponse.write(\'\\n\', escape=False)\nresponse.write(\'\\n\\n \', escape=False)\nif response.menu:\n response.write(\'\\n <script type="text/javascript">\\n jQuery(function(){ jQuery(\\\'ul.sf-menu\\\').supersubs({minWidth:12,maxWidth:30,extraWidth:3}).superfish(); });\\n </script>\\n \', escape=False)\n pass\nresponse.write(\'\\n\\n \', escape=False)\n# using sidebars need to know what sidebar you want to use\nleft_sidebar_enabled = globals().get(\'left_sidebar_enabled\',False)\nright_sidebar_enabled = globals().get(\'right_sidebar_enabled\',False)\nmiddle_columns = {0:\'sixteen\',1:\'twelve\',2:\'eight\'}[\n(left_sidebar_enabled and 1 or 0)+(right_sidebar_enabled and 1 or 0)]\nresponse.write(\'\\n\\n <!-- uncomment here to load jquery-ui\\n <link rel="stylesheet" href=" http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all" />\\n <script src=" http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>\\n uncomment to load jquery-ui //-->\\n</head>\\n<body>\\n <div class="wrapper"><!-- for sticky footer -->\\n \\n <div class="topbar">\\n <div class="container"> \\n <div class="sixteen columns">\\n <div id="navbar">\', escape=False)\nresponse.write(\'auth\' in globals() and auth.navbar(separators=(\' \',\' | \',\'\')))\nresponse.write(\'</div>\\n \', escape=False)\nis_mobile=request.user_agent().is_mobile\nresponse.write(\'\\n\\t \', escape=False)\nif response.menu:\n response.write(\'\\n <div id="menu">\\n \', escape=False)\n response.write(MENU(response.menu, _class=\'mobile-menu\' if is_mobile else \'sf-menu\',mobile=is_mobile))\n response.write(\'\\n </div>\\n \', escape=False)\n pass\nresponse.write(\'\\n </div>\\n </div>\\n </div><!-- topbar -->\\n \\n <div class="header">\\n <div class="container"> \\n <div class="sixteen columns">\\n <h1 class="remove-bottom" style="margin-top: .5em;">\\n Archimanager\\n </h1>\\n <h5>\', escape=False)\nresponse.write(response.subtitle or \'\')\nresponse.write(\'</h5>\\n </div>\\n <div class="sixteen columns">\\n <div class="statusbar clearfix">\\n \', escape=False)\nresponse.write(\'\\n <div class="breadcrumbs">\', escape=False)\nresponse.write(request.function.replace(\'_\', \' \').title())\nresponse.write(\'</div>\\n \', escape=False)\nresponse.write(\'\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <div class="main">\\n <div class="container"> \\n \\n <div class="sixteen columns center">\\n \', escape=False)\nresponse.write(\'\\n \', escape=False)\nresponse.write(\'\\n\\n\', escape=False)\nif msg != \'start\':\n response.write(\'\\n\\t\', escape=False)\n response.write(msg)\n response.write(\'\\n\', escape=False)\n pass\nresponse.write(\'\\n\\n\', escape=False)\nresponse.write(SQLTABLE(rex,\nlinkto=URL(r=request, f=\'fichiers\'),\nheaders={ \'fichiers.id\':\'ID\', \'fichiers.nom_fichier\':\'Fichier\', \'fichiers.fichier\':\'download\', \'projects.project\':\'Projet\', \'fichiers.create_date\':\'Date Creation\', \'fichiers.create_time\':\'Heure Creation\', \'fichiers.description\':\'Description\', \'fichiers.users\':\'List Utilisateurs\'},\nupload=URL(\'download\')\n))\nresponse.write(\'\\n\\n<br><hr>\\n<a href=\', escape=False)\nresponse.write(URL(r=request, f=\'fichiers\'))\nresponse.write(\'>Ajouter Nouveau</a>\\n<br>\\n\\n\', escape=False)\nresponse.write(form)\nresponse.write(\'\\n\\n\\n\', escape=False)\nresponse.write(\'\\n\\n\', escape=False)\nresponse.write("\\n\\n<script>\\n$(function() {\\n $(\'#fichiers_project\').on(\'change\', function() {\\n //alert( $(this).attr(\'value\') ) ;\\n var proj = $(this).attr(\'value\') ;\\n $(\'#fichiers_users option\').each( function() {\\n if ( $(this).attr(\'value\') ) {\\n //alert( $(this).val() );\\n var userProject = $(this).text().split(\':\')[1]\\n if ( userProject == proj ) {\\n //alert( \'userproject is :\' + userProject ) ;\\n $(this).css(\'visibility\',\'visible\') ;\\n }\\n else {\\n //alert( \'lets hide it\' );\\n $(this).css(\'visibility\',\'hidden\') ;\\n }\\n }\\n } ) ;\\n } );\\n} );\\n</script>\\n\\n", escape=False)\nresponse.write(\'\\n \', escape=False)\nresponse.write(\'\\n </div>\\n \\n </div><!-- container -->\\n </div><!-- main -->\\n \\n <div class="push"></div>\\n </div><!-- wrapper -->\\n\\n <div class="footer">\\n <div class="container"> \\n <div class="sixteen columns">\\n \', escape=False)\nresponse.write(\' <!-- this is default footer -->\\n <div class="footer-content clearfix">\\n <div class="copyright">\', escape=False)\nresponse.write(T(\'Copyright\'))\nresponse.write(\' © 2012</div>\\n <div style="float: right;">\\n\\t\\t\\tcabinet Mimoun Mokhtar\\n </div>\\n </div>\\n \', escape=False)\nresponse.write(\'\\t\\n </div>\\n </div><!-- container -->\\n </div><!-- footer -->\\n \\n <!--[if lt IE 7 ]>\\n\\t<script src="\', escape=False)\nresponse.write(URL(\'static\',\'js/dd_belatedpng.js\'))\nresponse.write(\'"></script>\\n\\t<script> DD_belatedPNG.fix(\\\'img, .png_bg\\\'); //fix any <img> or .png_bg background-images </script>\\n\\t<![endif]-->\\n \', escape=False)\nif response.google_analytics_id:\n response.write(\'<script type="text/javascript"> var _gaq = _gaq || []; _gaq.push([\\\'_setAccount\\\', \\\'\', escape=False)\n response.write(response.google_analytics_id)\n response.write("\']); _gaq.push([\'_trackPageview\']); (function() { var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true; ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\'; var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s); })(); </script> ", escape=False)\n pass\nresponse.write(\'\\n</body>\\n</html>\\n\', escape=False)' p7 sS'snapshot' p8 (dp9 sS'traceback' p10 S'Traceback (most recent call last):\n File "/var/opt/app/gluon/restricted.py", line 205, in restricted\n exec ccode in environment\n File "/var/opt/app/applications/init/views/default/fichiers.html", line 59, in <module>\n File "/var/opt/app/gluon/tools.py", line 1189, in navbar\n next = \'?_next=\'+urllib.quote(URL(args=request.args,vars=request.vars))\n File "/var/opt/app/gluon/html.py", line 328, in URL\n other += \'?%s\' % urllib.urlencode(list_vars)\n File "/usr/lib/python2.7/urllib.py", line 1311, in urlencode\n v = quote_plus(str(v))\n File "/usr/lib/python2.7/urllib.py", line 1272, in quote_plus\n s = quote(s, safe + \' \')\n File "/usr/lib/python2.7/urllib.py", line 1267, in quote\n return \'\'.join(map(quoter, s))\nMemoryError\n' p11 # END TRACEBACK