View Issue Details

IDProjectCategoryView StatusLast Update
0004748Talerwallet (WebExtensions)public2017-04-28 19:31
ReportertgAssigned ToFlorian Dold 
PrioritynormalSeverityfeatureReproducibilityalways
Status assignedResolutionopen 
PlatformEdgeOSWindowsOS Version10
Product VersionSVN HEAD 
Target Version0.7Fixed in Version 
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

developer   ~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

developer   ~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

developer   ~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

developer   ~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

developer   ~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.

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 => SVN HEAD
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
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