cubicweb issueshttps://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues2024-03-05T15:26:54Zhttps://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1031Fix column_types for added properties through a RQL adapter2024-03-05T15:26:54ZNicola SpantiFix column_types for added properties through a RQL adapter```
rset = cnx.execute('Any X, X.dc_title() WHERE X is CWUser')
print(rset.column_types(1))
```
The result must be `'str'` or `'string'` and not `'CWUser'`.```
rset = cnx.execute('Any X, X.dc_title() WHERE X is CWUser')
print(rset.column_types(1))
```
The result must be `'str'` or `'string'` and not `'CWUser'`.https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1030Raise an error when try to access a non-existing member through RQL2024-03-05T15:27:01ZNicola SpantiRaise an error when try to access a non-existing member through RQL```
Any X, X.i_dont_exist WHERE X is CWUser
```
Cette requête RQL devrait renvoyer une erreur et pas renvoyer l'eid pour la 2e colonne.```
Any X, X.i_dont_exist WHERE X is CWUser
```
Cette requête RQL devrait renvoyer une erreur et pas renvoyer l'eid pour la 2e colonne.https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1004Got an internal error when re-creating a CWUser and trying to connect with a ...2024-02-14T15:35:04ZSimon ChabotGot an internal error when re-creating a CWUser and trying to connect with a previously set cookieStep to reproduce
1. Create an instance
2. Create a user `toto`
3. Log in with `toto`
4. Re-create the instance from stratch
5. Re-create the user `toto` (make sure the eid of the created user is ≠ than the one created at step 2, may be...Step to reproduce
1. Create an instance
2. Create a user `toto`
3. Log in with `toto`
4. Re-create the instance from stratch
5. Re-create the user `toto` (make sure the eid of the created user is ≠ than the one created at step 2, may be create some additional entities).
If the cookie created a step 3 is still there, them you may experience an Internal Server Error, as the eid in the cookie does not refer anymore to the user `toto`.
The `assert` causing the Internal Server Error is [this one](https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/blob/cfb38d4b3c2a38d211a5b0eb0089602dab14f51f/cubicweb/server/repository.py#L718). Instead of failing, we could invalidate the cookie and redirect to /login.Simon ChabotSimon Chabothttps://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/996Generating i18n files fails when entity's description is identical to the ent...2024-01-30T13:07:50ZSimon ChabotGenerating i18n files fails when entity's description is identical to the entity nameAssuming
```
# schema.py
class Toto(EntityType):
"""Toto"""
pass
```
executing `cubicweb-ctl i18ncube my-cube` fails because two keys are identical.
It should not fail, as the two `Toto` are not the same thing.
I think the i...Assuming
```
# schema.py
class Toto(EntityType):
"""Toto"""
pass
```
executing `cubicweb-ctl i18ncube my-cube` fails because two keys are identical.
It should not fail, as the two `Toto` are not the same thing.
I think the issue comes from: https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/blob/branch/4.x/cubicweb/devtools/devctl.py?ref_type=heads#L179 and https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/blob/branch/4.x/cubicweb/devtools/devctl.py?ref_type=heads#L166 where not context is provided.https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/835Dependencies starting with "cubicweb_" in __pkginfo__.__depends__ are not tre...2023-09-22T12:44:56ZFrank BessouDependencies starting with "cubicweb_" in __pkginfo__.__depends__ are not treated as cubes when it should be the caseA python package can be installed with `pip install <package-name>` where `<package-name>` can be different from the official name of the package.
For example, you can install `cubicweb-api` with `pip install cubicweb_api` or even `pip i...A python package can be installed with `pip install <package-name>` where `<package-name>` can be different from the official name of the package.
For example, you can install `cubicweb-api` with `pip install cubicweb_api` or even `pip install cubicweb_api`.
These are valid for pip, which normalizes the package name before requesting it to PyPI but cubicweb doesn't know about this normalization and will not detect that a `cubicweb_api` package in the `__pkginfo__` is equivalent to `cubicweb-api`.
To reproduce, edit `__depends__` field of `__pkginfo__.py` and replace "-" by "_" in cube dependencies.
Here is the specification of the normalization process : https://packaging.python.org/en/latest/specifications/name-normalization/https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/830[migration] Faire que `sync_schema_props_perms` pour un attribut gère le pass...2023-09-07T14:29:24ZNicola Spanti[migration] Faire que `sync_schema_props_perms` pour un attribut gère le passage de calculé à un non-calculé## Souhait abstrait
0. `sync_schema_props_perms` est supposé mettre en conformité le schéma déclaré en Python et celui en base de données.
1. Actuellement, `sync_schema_props_perms` pour un attribut ne gère pas le passage de calculé (do...## Souhait abstrait
0. `sync_schema_props_perms` est supposé mettre en conformité le schéma déclaré en Python et celui en base de données.
1. Actuellement, `sync_schema_props_perms` pour un attribut ne gère pas le passage de calculé (dont la valeur est défini par une requête RQL avec `formula`) à un non-calculé (le cas classique). Ça plante.
2. Même si l'attribut n'a pas une valeur en dur, il a une valeur. La migration avec `sync_schema_props_perms` ne devrait pas l'enlever. Il faudrait donc à la migration que ce soit calculé avec l'ancienne formule les valeurs pour toutes les entités concernées déjà en base de données et que les valeurs calculées soient stockées en base de données, à moins bien sûr que le calcul ne se fasse pas à l'accès de l'attribut mais à chaque fois qu'il y a un changement dû à la formule et que la valeur calculée soit stockée en base de données.
## Exemple
### Schéma
#### Avant
```
class Network(EntityType):
json_mod_date = TZDatetime(
formula='Any MAX(D) WHERE E in_network X, E modification_date D')
```
#### Après
```
class Network(EntityType):
json_mod_date = TZDatetime()
```
### Migration
#### Actuellement
```
drop_attribute('Network', 'json_mod_date')
add_attribute('Network', 'json_mod_date')
for network_search in cnx.find('Network'):
cnx.execute(
'SET N json_mod_date MAX(D) '
'WHERE N eid %(eid)s, E in_network N, E modification_date D',
{'eid': network_search[0]})
cnx.commit()
```
#### Ce qu'on voudrait
```
sync_schema_props_perms('Network', 'json_mod_date')
```
Il faudrait donc que `sync_schema_props_perms` fasse que l'attribut ne soit plus calculé et qu'il calcule la valeur pour les entités existantes avec le dit attribut.
### Tentative
```
$ diff-cleaned
a/migration/next.py b/migration/next.py
--- /dev/null
+++ b/migration/next.py
+sync_schema_props_perms('Network', 'json_mod_date')
diff --git a/schema.py b/schema.py
index 103ec15b9..2755a080e 100644
--- a/schema.py
+++ b/schema.py
class Network(EntityType):
- json_mod_date = TZDatetime(
- formula='Any MAX(D) WHERE E in_network X, E modification_date D')
+ json_mod_date = TZDatetime()
$ cubicweb-ctl shell my-instance migration/next.py
Traceback (most recent call last):
File "/home/nspanti/.virtualenvs/project/bin/cubicweb-ctl", line 33, in <module>
sys.exit(load_entry_point('cubicweb==3.38.9', 'console_scripts', 'cubicweb-ctl')())
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/cwctl.py", line 955, in run
CWCTL.run(args)
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/logilab/common/clcommands.py", line 148, in run
sys.exit(command.main_run(args, rcfile))
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/logilab/common/clcommands.py", line 289, in main_run
self.run(args)
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/cwctl.py", line 840, in run
mih.cmd_process_script(script, scriptargs=args)
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/server/migractions.py", line 218, in cmd_process_script
return super(ServerMigrationHelper, self).cmd_process_script(
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/migration.py", line 384, in cmd_process_script
exec(code, scriptlocals)
File "migration/next.py", line 1, in <module>
sync_schema_props_perms('Network', 'json_mod_date')
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/migration.py", line 141, in <lambda>
return lambda *args, **kwargs: self.interact(
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/migration.py", line 215, in interact
return meth(*args, **kwargs)
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/server/migractions.py", line 1413, in cmd_sync_schema_props_perms
self.commit()
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/server/migractions.py", line 334, in commit
self.cnx.commit()
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/server/session.py", line 156, in check_open
return func(cnx, *args, **kwargs)
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/server/session.py", line 734, in commit
operation.handle_event("precommit_event")
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/server/hook.py", line 825, in handle_event
getattr(self, event)()
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/cubicweb/hooks/synccomputed.py", line 46, in precommit_event
select = self.cnx.repo.vreg.rqlhelper.parse(formula).children[0]
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/rql/__init__.py", line 115, in parse
rqlst = parse(rqlstring, False)
File "/home/nspanti/.virtualenvs/project/lib/python3.9/site-packages/rql/__init__.py", line 244, in parse
rqlstring = rqlstring.strip()
AttributeError: 'NoneType' object has no attribute 'strip'
```https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/815RichString in restructuredtext with only a comment fails2023-08-29T12:50:39ZSimon ChabotRichString in restructuredtext with only a comment failsStep to reproduce :
1) create an instance with the cube Note.
2) create a Note, in Restructured format, containing a comment, eg : `.. hello world`.
Expected behavior :
- an error ?
- How to render this ?
- the note should be inlined...Step to reproduce :
1) create an instance with the cube Note.
2) create a Note, in Restructured format, containing a comment, eg : `.. hello world`.
Expected behavior :
- an error ?
- How to render this ?
- the note should be inlined editable
Current behavior :
- trying to inline edit the note will fail.
- the « right column » (tool box) of Cubicweb moves from the right side to the bottom (oO !)Simon ChabotSimon Chabothttps://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/646[editcontroller] Abusive supression of composite2023-01-05T18:17:06ZKatia Saurfelt[editcontroller] Abusive supression of compositeIn case a composite relation (composite=object) has several object types, the deletion of the subject is triggered when we change the existing object for an object of another cw_etype
![image](/uploads/ae17225db3cf4c859952a748ee16d343/...In case a composite relation (composite=object) has several object types, the deletion of the subject is triggered when we change the existing object for an object of another cw_etype
![image](/uploads/ae17225db3cf4c859952a748ee16d343/image.png)
cf. https://forge.extranet.logilab.fr/cubicweb/cubes/web/-/blob/branch/default/cubicweb_web/views/editcontroller.py#L397https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/645[formfield] mandatory composite relations are not considered as such in Fields2023-01-05T12:22:49ZKatia Saurfelt[formfield] mandatory composite relations are not considered as such in FieldsIn the edit widget the mandatory composite relationship is not marked as mandatory and an empty value is added in the options as if it was a real choice. If this empty option is chosen, the deletion of the composite entity is triggered, ...In the edit widget the mandatory composite relationship is not marked as mandatory and an empty value is added in the options as if it was a real choice. If this empty option is chosen, the deletion of the composite entity is triggered, which is a bit surprising and unwanted
cf. web/formfields.py guess_field methodhttps://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/644Link to project homepage are broken in pypi2023-01-24T13:37:55ZFrançois FerryLink to project homepage are broken in pypifor instance: https://pypi.org/project/cubicweb-keyword/for instance: https://pypi.org/project/cubicweb-keyword/https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/640[logilab-database] it looks like an instance with postgres don't use SEQUENCE...2022-12-21T16:23:42ZFrançois Ferry[logilab-database] it looks like an instance with postgres don't use SEQUENCE for eidHow to reproduce:
- create an instance with PG and initialize the DB
- check into psql what kind of stuff is `entities_id_seq`: it's a table while it should be a sequence
Sequence creation is here: https://forge.extranet.logilab.fr/ope...How to reproduce:
- create an instance with PG and initialize the DB
- check into psql what kind of stuff is `entities_id_seq`: it's a table while it should be a sequence
Sequence creation is here: https://forge.extranet.logilab.fr/open-source/logilab-database/-/blob/branch/default/logilab/database/postgres.py#L305, but obviously we are using the parent method: https://forge.extranet.logilab.fr/open-source/logilab-database/-/blob/branch/default/logilab/database/__init__.py#L1066, maybe because we call https://forge.extranet.logilab.fr/open-source/logilab-database/-/blob/branch/default/logilab/database/__init__.py#L1090 to create a sequence ?
This last is called here: https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/blob/branch/default/cubicweb/server/sources/native.py#L1532, when initialazing the repo.François FerryFrançois Ferryhttps://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/573[cwclientlib,signedrequests] Authentication fails when the locales of the cli...2023-01-24T13:42:26ZSimon Chabot[cwclientlib,signedrequests] Authentication fails when the locales of the client and servers are different# Bug
Authentication fails when the locales of the client and servers are different
# Step to reproduce
- Take a cubicweb instance with signedrequests installed. Assume the server is configured in english.
- execute the following scri...# Bug
Authentication fails when the locales of the client and servers are different
# Step to reproduce
- Take a cubicweb instance with signedrequests installed. Assume the server is configured in english.
- execute the following script:
```
import locale
from cwclientlib import cwproxy_for
locale.setlocale(locale.LC_TIME, "fr_FR.UTF-8")
PROXY = cwproxy_for("https://MYSERVER.COM")
PROXY.execute("Any X LIMIT 1")
```
this will fail with an Authentication Error, with cwclientlib 1.2.2 and signedrequests 1.1.0 (latest versions as this time).
Removing the `locale.setlocale(locale.LC_TIME, "fr_FR.UTF-8")` make the authentication right (assuming the token and cwclientlibrc etc are well configured).
# Expected behavior
No Authentication Error regarding the locales value.
# Suggested steps to fix
1) Change the format of the sent Date through the headers ([here](https://forge.extranet.logilab.fr/cubicweb/cwclientlib/-/blob/5e5766bb40d6861db142b575ae9d0bb770e8f873/cwclientlib/cwproxy.py#L120)). It currently contains the weekday and month as string, written in the user's locale (hence the issue). We could use simply use `datetime.utcnow().isoformat()`.
2) Change the way the date is parsed in `signedrequests` ([here](https://forge.extranet.logilab.fr/cubicweb/cubes/signedrequest/-/blob/31e84ee797ac84b264252ba761cc1c2c2d3204ac/cubicweb_signedrequest/tools.py#L128)). We could use `datetime.fromisoformat`.
# Retro-compatibility
To discuss.https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/546Make use of `msg` of `UniqueConstraint`2022-06-02T14:31:08ZNicola SpantiMake use of `msg` of `UniqueConstraint`## Context
A `UniqueConstraint` of [YAMS](https://forge.extranet.logilab.fr/open-source/yams) (see `yams/constraints.py`) can have a message (through parameter `msg` of `BaseConstraint`). If the constraint fails, we would like to have t...## Context
A `UniqueConstraint` of [YAMS](https://forge.extranet.logilab.fr/open-source/yams) (see `yams/constraints.py`) can have a message (through parameter `msg` of `BaseConstraint`). If the constraint fails, we would like to have the given `msg` if one given.
## Problem
But we don't have this. Instead, the SQL error is given. It should be catched and replaced by `msg` if its booleanity equals `True`.
## Origin
The problem could seem to come from [YAMS](https://forge.extranet.logilab.fr/open-source/yams). But, YAMS does not do the SQL translation of the constraint, CubicWeb does (see `cubicweb/server/schema2sql.py`). That is why we thought it is a CubicWeb issue.
## Screenshoots
### Example of the problem in the GUI
![](/uploads/14fed8c6dc9205e3201d8e039d59a25d/unique-constraint-msg.png)
### Code that caused the problem
![](/uploads/cd6808cd17c8ca2e1db32458f904e286/unique-constraint-exemple.png)
### Possible workaround
![](/uploads/039ea970d3515265d287414c7026e6f2/unique-constraint-workaround.png)https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/542create_eid: the function is recursive and may create hundreds of db connectio...2022-05-18T11:55:39ZSimon Chabotcreate_eid: the function is recursive and may create hundreds of db connection on eid creation failureThe [`_create_eid`](https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/blob/branch/default/cubicweb/server/sources/native.py#L212) function is recursive. On DB failure, the db connection is unset, the function is recalled, and a new c...The [`_create_eid`](https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/blob/branch/default/cubicweb/server/sources/native.py#L212) function is recursive. On DB failure, the db connection is unset, the function is recalled, and a new connection is created. If the function fails again, a new connection is created… and so on.
On a production application, we have seen hundreds of connection trying to increment the `entity_idx_seq`.
May be the recursion should be limited (10 calls for instance), and a proper error should be raised whether no eid has been created when the limit is reached.https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/487Permissions on relation seems checked on only one subject2022-01-04T08:55:48ZNicola SpantiPermissions on relation seems checked on only one subjectImagine we have a `RQLConstraint` for subjects of a relation. It works well with one subject. However if we set multiple subjects at once, one good subject seems to be enough, so wrong subjects that are set with the good one are also acc...Imagine we have a `RQLConstraint` for subjects of a relation. It works well with one subject. However if we set multiple subjects at once, one good subject seems to be enough, so wrong subjects that are set with the good one are also accepted! See CPR-11688 of private project.https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/483Strange exception of RDBMS API on cardinality violation on create2021-12-14T09:01:09ZNicola SpantiStrange exception of RDBMS API on cardinality violation on createWhen on an entity type of the schema, `cardinality` is defined with `+` (at least one), and that the constraint is violated, we would except an exception that says that the cardinality is violated. Instead of this, it says that the relat...When on an entity type of the schema, `cardinality` is defined with `+` (at least one), and that the constraint is violated, we would except an exception that says that the cardinality is violated. Instead of this, it says that the relation of one is not filled !
## Example
### Schema
```
class Group(EntityType):
units = SubjectRelation('GroupItem, cardinality='+?')
```
### Automatic test
```
def test_group_unit_multiple_create(self):
with self.admin_access.cnx() as cnx:
self.create_group(cnx, units=(self.item1_eid,))
cnx.commit()
self.create_group(cnx, units=(self.item1_eid,))
cnx.commit() # the exception comes from here
```
### Result
```
yams._exceptions.ValidationError: 9070 (units-subject): at least one relation units is required on Group (9070)
```
### Stack trace
```
../../.virtualenvs/nemo/lib/python3.7/site-packages/cubicweb/server/session.py:157: in check_open
return func(cnx, *args, **kwargs)
../../.virtualenvs/nemo/lib/python3.7/site-packages/cubicweb/server/session.py:735: in commit
operation.handle_event("precommit_event")
../../.virtualenvs/nemo/lib/python3.7/site-packages/cubicweb/server/hook.py:807: in handle_event
getattr(self, event)()
```
## Versions used
- CubicWeb 3.32.7
- RQL 0.37.0
- YAMS 0.45.3https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/482Raw unique exception of RDBMS API on cardinality violation on update2021-12-14T09:01:09ZNicola SpantiRaw unique exception of RDBMS API on cardinality violation on updateWhen on an entity type of the schema, `cardinality` is defined with `?` (0 or 1), and that the constraint is violated, we would except a RQL/YAMS/CubicWeb error and RDBMS depend one. Moreover the exception should be raised on commit and ...When on an entity type of the schema, `cardinality` is defined with `?` (0 or 1), and that the constraint is violated, we would except a RQL/YAMS/CubicWeb error and RDBMS depend one. Moreover the exception should be raised on commit and not on `cw_set`.
## Example
### Schema
```
class Group(EntityType):
units = SubjectRelation('GroupItem, cardinality='+?')
```
### Automatic test
```
def test_group_unit_multiple_update(self):
with self.admin_access.cnx() as cnx:
group = self.create_group(cnx, production_units=(self.item1_eid,))
self.create_group(cnx, units=(self.item1_eid,))
cnx.commit()
with self.assertRaises(ValidationError) as error: # FAIL
group.cw_set(units=(self.item1_eid,self.item2_eid))
# No need of cnx.commit() to have an exception raised!
```
### Result
- ```
sqlite3.IntegrityError: UNIQUE constraint failed: production_units_relation.eid_from, production_units_relation.eid_to
```
- ```
psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "key_f98727f7a350360b2799dbd8b8f066a0"
DETAIL: Key (eid_from, eid_to)=(9070, 9053) already exists.
```
## Versions used
- CubicWeb 3.32.7
- RQL 0.37.0
- YAMS 0.45.3https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/376[hell-magic] Strange bug with `__import__` in `RegistryStore.load_file` on `d...2021-08-26T12:15:53ZNicola Spanti[hell-magic] Strange bug with `__import__` in `RegistryStore.load_file` on `db-create`I tried to initialize a new instance with `cubicweb-ctl db-create cubename` (with Python 3 and CubicWeb 3.31). But after "Initializing the system database", I got the mysterious message "Instruction non permise". I found that it comes fr...I tried to initialize a new instance with `cubicweb-ctl db-create cubename` (with Python 3 and CubicWeb 3.31). But after "Initializing the system database", I got the mysterious message "Instruction non permise". I found that it comes from `__import__(modname, fromlist=modname.split(".")[:-1])` of `RegistryStore.load_file`. It works a lot of time, but it fails with `modname="cubename.entities.adapters"`.
```
$ python3
>>> __import__('cubename.entities.adapters', fromlist=['cubename', 'entities'])
RDFLib Version: 6.0.0
INFO:rdflib:RDFLib Version: 6.0.0
Instruction non permise
```
It is very mysterious and [`__import__`](https://docs.python.org/3/library/functions.html#__import__) does not help with its message (that includes RDFLib stuff in standard shell but does not with `db-create` to add even more mysteriousness) and no exception is raised. I removed `__import__` use but it failed later.
I finally succeed to overpass the problem with this horrible hack:
```
if not modname in ('cubename.entities.adapters',
'cubename.entities.synthesis_adapters'):
module = __import__(modname, fromlist=modname.split(".")[:-1])
```
So even if it would not solve the root problem, if we could catch the error, then we could at least continue like if nothing bad happened and it works despite the error at least in some cases. It is in [`logilab-common`](https://forge.extranet.logilab.fr/open-source/logilab-common), but I reported it as it impacts a key function of CubicWeb and because I do not know how to reproduce it in an other way.
Edit: `cubicweb-ctl pyramid -D cubename` ended "Process exited with -4" and no more message. After added 2 more strings to exclude, the web server final launched… and gives a white web page (but it failed to fetch data ressources, aka `/data/hash/ressource`, so it may be an other mysterious magic problem).