View Issue Details

IDProjectCategoryView StatusLast Update
0004748Talerwallet (WebExtension)public2020-01-20 12:25
Reportertg Assigned ToFlorian Dold  
PrioritynormalSeverityfeatureReproducibilityalways
Status closedResolutionwon't fix 
PlatformEdgeOSWindowsOS Version10
Product Versiongit (master) 
Target Version0.6Fixed in Version0.6 
Summary0004748: errors in edge
Descriptionextension icon is not displayed in toolbar, setIcon does not seem to work

popup:
 - balance is not shown
 - history is not shown

payment:
 - have to click twice on 'confirm payment' button

otherwise both withdrawal and payment work

tested 0.6.22
Steps To Reproduce1. download VM:
   https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

2. convert chrome to edge extension:
   https://www.microsoft.com/en-us/store/p/microsoft-edge-extension-toolkit/9nblggh4txvb

3. enable developer mode:
   https://developer.microsoft.com/en-us/microsoft-edge/platform/documentation/extensions/guides/adding-and-removing-extensions/
TagsNo tags attached.

Activities

Christian Grothoff

2017-03-02 08:08

manager   ~0011880

tg: can you look into this one?

Florian Dold

2017-03-23 19:27

manager   ~0011969

TG: Can you try with the most recent demo and the most recent Edge?

tg

2017-04-27 17:17

reporter   ~0012073

Microsoft Edge 38.14393.0.0
Taler 0.2.2 / 0.6.39,

POPUP
- balance page is empty

WITHDRAW
- stuck at waiting for exchange.demo.taler.net..
error console:
  XMLHttpRequest: Network Error 0x2, The system cannot find the file specified.
  this shows up about 10x, some even before Jed loads
if I enable break on exception and press ctrl+R, then I get two breaks on
src/pages/confirm-create-reserve.js:271
 let r = yield wxApi_1.getReserveCreationInfo(url, this.props.amount);

somehow I also got this two times while stepping thru some code there,
but then couldn't reproduce it anymore:
CSP14312: Resource violated directive 'script-src 'self'' in Host Defined Policy: script eval. Resource will be blocked.

tg

2017-04-27 17:28

reporter   ~0012074

looks like this exception only happens if I press ctrl+R,
when the page loads for the first time there's no exception and the xmlhttprequest errors only show up 10 seconds after the page loaded

tg

2017-04-27 19:13

reporter   ~0012075

after enabling background page debugging, I got this when trying to withdraw:

got connect!
wxBackend.js (569,25)

making fresh exchange
wallet.js (981,29)

src/query.js:415
tx.objectStore(store.name).put(obj);
DataError

then the error is bubbling up:

wallet.js:1022
yield this.q()
                            .putAll(Stores.denominations, Object.keys(newAndUnseenDenoms).map((d) => newAndUnseenDenoms[d]))
                            .putAll(Stores.denominations, Object.keys(existingDenoms).map((d) => existingDenoms[d]))
                            .finish();

wallet.js:992
let updatedExchangeInfo = yield this.updateExchangeInfo(exchangeInfo,exchangeKeysJson);

wallet.js:910
let exchangeInfo = yield this.updateExchangeFromUrl(baseUrl);
DataError

wxBackend.js:240
let r = yield p;
DataError

also, wxBackend.js:255
e.stack is undefined
(e is of type DOMException)

further entries console log:

exception during wallet handler for 'reserve-creation-info'
wxBackend.js (248,17)

request.type: "reserve-creation-info"

SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified.

9
SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified.

9
SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified.

9
SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified.

9
SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified.

9
SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified.

9
SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified.

9
SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified.

9
SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified.

9
SCRIPT7002: XMLHttpRequest: Network Error 0x2, The system cannot find the file specified.

9
got connect!
wxBackend.js (569,25)
got connect!
wxBackend.js (569,25)
making fresh exchange
wallet.js (981,29)
console.dir()
undefined
obj
{
   [functions]: ,
   __proto__: { },
   denomPub: "51R7ARKCD5HJTTV5F4G0M818E9SP280A40G2GVH04CR30GSG68S3JC9N88WK6G9N8H2M8H2460R3CGT38GTM2DJ66X138GA46S1K2DSN8MTM4C9K6WS3AE1P6CR3AH1G710KCDHM6WR4CG9P84TM4CSN6MSKCHA3650M4C228D2KJE268RRKEE9N8H248CA474V30GJ38GV4AD1J6GRM6DT16RVM4EA36MSM2CHM68SK2DSK8RW30E9Q6CS44HHM6CWK0G9Q8CR3GD9R68TMCDSR8MSMAEA56MTM8CSH6MW3AGHR6RS3GGJ38GT3CE1J60VM2GA56WT34DJ364T48C9K6GR3ACHQ6WRK4HJ36GT30H1K8H33GDA28RS44D1K6GW42HHS6CRK6GT38534CH9H60RK6HHN8H34AD9J6RTM6H1G6WR3JH2660T46C9K60R3AH1R84RK6G9M6CSKJD248GRKGGA575332DSG8N348D1Q6X2K2C1M6X146H9M8MRM4DHJ8GV3AEA56D1K8H1M710KAE1J74RMCCA674SMCDSH6GS46H9K8CT3GD9N8RS3CC1S712K6DHG6N2K4C9H6N248GA2851KGD1M8RWMAD1G611MCG9N6RVK4GT58CSM2D226WWK4E1S6D1KEC9N84RKJCHS8D0MADJ374TKAH9K6S2K2EA18934CDA46CV30GA68RV32GSJ8S1MCH9G891K0DHQ6WRKGGA58H33JGHS8RW30E9Q8GV46CA26S0K2C216MS30C9S6WT30D9N6MW38H1G8N130HHH6MSKGG9G84V34DA28RVKECA26GVKAD9N6D1K0HA56CR32E9N6WR30E9Q4CMGM81051JJ08SG64R30C1H4CMGM81054520A8A00",
   exchangeBaseUrl: "https://exchange.demo.taler.net/",
   feeDeposit: {
      [functions]: ,
      __proto__: { },
      currency: "KUDOS",
      fraction: 1000000,
      value: 0
   },
   feeRefresh: {
      [functions]: ,
      __proto__: { },
      currency: "KUDOS",
      fraction: 1000000,
      value: 0
   },
   feeRefund: {
      [functions]: ,
      __proto__: { },
      currency: "KUDOS",
      fraction: 1000000,
      value: 0
   },
   feeWithdraw: {
      [functions]: ,
      __proto__: { },
      currency: "KUDOS",
      fraction: 1000000,
      value: 0
   },
   isOffered: true,
   masterSig: "859X0D9PB1G9MS6RK970W73VXPM1BBZZ0FN8DJQFG50JYJX0ZSYH4H1QPTE5R1WJCNXPKX95RVE92F5RVH4ZNVDSRNF8MRGV2V0PR3G",
   stampExpireDeposit: "/Date(1646839844)/",
   stampExpireLegal: "/Date(1804519844)/",
   stampExpireWithdraw: "/Date(1583767844)/",
   stampStart: "/Date(1489159844)/",
   status: 0,
   value: {
      [functions]: ,
      __proto__: { },
      currency: "KUDOS",
      fraction: 0,
      value: 1000
   }
}
exception during wallet handler for 'reserve-creation-info'
wxBackend.js (248,17)
request [object Object]
wxBackend.js (249,17)
   "request"
   {
      [functions]: ,
      __proto__: { },
      detail: { },
      type: "reserve-creation-info"
   }

DataError
wxBackend.js (250,17)
   {
      [functions]: ,
      __proto__: { },
      ABORT_ERR: 20,
      code: 0,
      DATA_CLONE_ERR: 25,
      DOMSTRING_SIZE_ERR: 2,
      HIERARCHY_REQUEST_ERR: 3,
      INDEX_SIZE_ERR: 1,
      INUSE_ATTRIBUTE_ERR: 10,
      INVALID_ACCESS_ERR: 15,
      INVALID_CHARACTER_ERR: 5,
      INVALID_MODIFICATION_ERR: 13,
      INVALID_NODE_TYPE_ERR: 24,
      INVALID_STATE_ERR: 11,
      message: "DataError",
      name: "DataError",
      NAMESPACE_ERR: 14,
      NETWORK_ERR: 19,
      NO_DATA_ALLOWED_ERR: 6,
      NO_MODIFICATION_ALLOWED_ERR: 7,
      NOT_FOUND_ERR: 8,
      NOT_SUPPORTED_ERR: 9,
      PARSE_ERR: 81,
      QUOTA_EXCEEDED_ERR: 22,
      SECURITY_ERR: 18,
      SERIALIZE_ERR: 82,
      SYNTAX_ERR: 12,
      TIMEOUT_ERR: 23,
      TYPE_MISMATCH_ERR: 17,
      URL_MISMATCH_ERR: 21,
      VALIDATION_ERR: 16,
      WRONG_DOCUMENT_ERR: 4
   }

making fresh exchange
wallet.js (981,29)
exception during wallet handler for 'reserve-creation-info'
wxBackend.js (248,17)
request [object Object]
wxBackend.js (249,17)
   "request"
   {
      [functions]: ,
      __proto__: { },
      detail: {
         [functions]: ,
         __proto__: { },
         amount: {
            [functions]: ,
            __proto__: { },
            currency: "KUDOS",
            fraction: 0,
            value: 10
         },
         baseUrl: "https://exchange.demo.taler.net/"
      },
      type: "reserve-creation-info"
   }

DataError
wxBackend.js (250,17)
   {
      [functions]: ,
      __proto__: { },
      ABORT_ERR: 20,
      code: 0,
      DATA_CLONE_ERR: 25,
      DOMSTRING_SIZE_ERR: 2,
      HIERARCHY_REQUEST_ERR: 3,
      INDEX_SIZE_ERR: 1,
      INUSE_ATTRIBUTE_ERR: 10,
      INVALID_ACCESS_ERR: 15,
      INVALID_CHARACTER_ERR: 5,
      INVALID_MODIFICATION_ERR: 13,
      INVALID_NODE_TYPE_ERR: 24,
      INVALID_STATE_ERR: 11,
      message: "DataError",
      name: "DataError",
      NAMESPACE_ERR: 14,
      NETWORK_ERR: 19,
      NO_DATA_ALLOWED_ERR: 6,
      NO_MODIFICATION_ALLOWED_ERR: 7,
      NOT_FOUND_ERR: 8,
      NOT_SUPPORTED_ERR: 9,
      PARSE_ERR: 81,
      QUOTA_EXCEEDED_ERR: 22,
      SECURITY_ERR: 18,
      SERIALIZE_ERR: 82,
      SYNTAX_ERR: 12,
      TIMEOUT_ERR: 23,
      TYPE_MISMATCH_ERR: 17,
      URL_MISMATCH_ERR: 21,
      VALIDATION_ERR: 16,
      WRONG_DOCUMENT_ERR: 4
   }

then all of the above repeats once more

tg

2017-04-27 19:14

reporter   ~0012076

Payment page in the essay store:

cryptoWorker.js produces the following two types of errors:

1. taler-emscripten-lib.js
lookup:(function(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT]})
Error: No such file or directory

the above repeats for these paths:
/tmp /home /home/web_user /dev /dev/null /dev/tty /dev/tty1 /dev/random /dev/urandom /dev/shm /dev/shm/tmp /proc /proc/self /proc/self/fd /dev/stdin /dev/stdout /dev/stderr /etc /proc/sys /proc/sys/crypto/fips_enabled /etc /etc/gcrypt/hwf.deny

2. system-csp-production.src.js:4519
throw new Error('_');

then there's this error from the main thread:

Unknown code:
function v(i,r){var o,u,e; return t(r)!="undefined"&&(o=f.stringify(r)),u=n.genericSynchronousFunction(i,o),typeof u=="string"?e=f.parse(u):u&&(e=u),e}
The handle is invalid

call stack:

[Main Thread]
v [Line: 1, Col: 6262], Unknown script code (1)
b [Line: 1, Col: 6122], Unknown script code (1)
pi [Line: 1, Col: 3967], Unknown script code (1)
ChromeNotifier.prototype.notify [Line: 584, Col: 25], wxBackend.js
Anonymous function [Line: 454, Col: 25], wallet.js
Generator.prototype.next
fulfilled [Line: 26, Col: 47], wallet.js
[Worker#2 cryptoWorker.js (background.html)]

wxBackend.js:240
let r = yield p;
The handle is invalid

console log:

exception during wallet handler for 'save-offer'
wxBackend.js (248,17)

request [object Object]
wxBackend.js (249,17)
   "request"
   {
      [functions]: ,
      __proto__: { },
      detail: { },
      type: "save-offer"
   }

Error: The handle is invalid.

wxBackend.js (250,17)
   {
      [functions]: ,
      __proto__: { },
      description: "The handle is invalid.
",
      message: "The handle is invalid.
",
      name: "Error",
      number: -2147024890,
      stack: "Error: The handle is invalid.

   at v (Unknown script code:2:6261)
   at b (Unknown script code:2:6121)
   at pi (Unknown script code:2:3966)
   at ChromeNotifier.prototype.notify (ms-browser-extension://GNUTalerWallet_s1h8er1fc6q4m/src/wxBackend.js:584:25)
   at Anonymous function (ms-browser-extension://GNUTalerWallet_s1h8er1fc6q4m/src/wallet.js:461:25)
   at Generator.prototype.next (native code)
   at fulfilled (ms-browser-extension://GNUTalerWallet_s1h8er1fc6q4m/src/wallet.js:26:47)"
   }

tg

2017-04-28 19:28

reporter   ~0012080

First issue is that edge has problems with using an array as indexeddb key,
we use currently:
      super("denominations",
            {keyPath: ["exchangeBaseUrl", "denomPub"] as any as IDBKeyPath});

there's an open bug report about this:
https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/3766542/
one suggestion is to use a concatenated string as key instead:
http://stackoverflow.com/questions/20710884/using-arrays-as-indexeddb-keypaths-in-ie-10-11

The second issue is when using Port.postMessage() returning "The handle is invalid", this may be because Port.onDisconnect() has only been implemented recently:
https://docs.microsoft.com/en-us/microsoft-edge/extensions/api-support/extension-api-roadmap

Placing postMessage() inside a try/catch block is a workaround for now.

Another issue is that edge does not like passing an undefined argument to openCursor(), as in query.ts:480

 let req = s.openCursor(kr);

Replacing this with two different calls, one with an argument and one without, solves this issue.

Then what happens next is that due to having 0 coins in the wallet,
checkPay() is called in an infinite loop, resulting in after 50 or so iterations edge starting to return an error on every operation on this.q(), e.g:

let transaction = yield this.q().get(Stores.transactions, offer.H_contract);
Error: Object doesn't support property or method 'get'

It should give up after the first insufficient coins message.

Florian Dold

2019-12-28 15:53

manager   ~0015225

This is based on a very old wallet, and Edge will be based on Chromium in the future, so it doesn't make sense to investigate errors for the old Edge.

Issue History

Date Modified Username Field Change
2016-10-21 20:17 tg New Issue
2016-10-21 20:17 tg Status new => assigned
2016-10-21 20:17 tg Assigned To => Florian Dold
2016-10-21 22:00 Christian Grothoff Severity minor => feature
2016-10-21 22:00 Christian Grothoff Product Version 0.6 => git (master)
2016-11-15 15:55 Christian Grothoff Target Version => 0.3
2017-03-02 08:08 Christian Grothoff Note Added: 0011880
2017-03-23 19:27 Florian Dold Note Added: 0011969
2017-03-23 19:27 Florian Dold Assigned To Florian Dold => tg
2017-04-09 00:27 Christian Grothoff Priority low => normal
2017-04-09 00:27 Christian Grothoff Target Version 0.3 => 0.7.1
2017-04-27 17:17 tg Note Added: 0012073
2017-04-27 17:28 tg Note Added: 0012074
2017-04-27 19:13 tg Note Added: 0012075
2017-04-27 19:14 tg Note Added: 0012076
2017-04-28 19:28 tg Note Added: 0012080
2017-04-28 19:31 tg Assigned To tg => Florian Dold
2019-12-28 15:53 Florian Dold Status assigned => resolved
2019-12-28 15:53 Florian Dold Resolution open => won't fix
2019-12-28 15:53 Florian Dold Note Added: 0015225
2020-01-20 12:25 Christian Grothoff Status resolved => closed
2020-01-20 12:25 Christian Grothoff Fixed in Version => 0.6
2020-01-20 12:25 Christian Grothoff Target Version 0.7.1 => 0.6
2023-04-13 20:37 Florian Dold Category wallet (WebExtensions) => wallet (WebExtension)