View Issue Details

IDProjectCategoryView StatusLast Update
0006829Talermerchant backend API (C)public2021-08-24 16:23
Reportersebasjm Assigned ToChristian Grothoff  
Status closedResolutionfixed 
Product Versiongit (master) 
Target Version0.8Fixed in Version0.8 
Summary0006829: merchant backend crash if exchange does not support wire method
Descriptionbackend says:

    WARNING Exchange does not support our wire method. Retrying in 1 m

a minute after

    WARNING Exchange does not support `asd' wire method (will retry later)

then it blows up in pieces

    Segmentation fault (core dumped) taler-merchant-httpd

Exchange has x-taler-bank as wire method. Merchant backend was intentionally set to "payto://asd/asd".

Steps To Reproducecreate an instance with invalid account
try to use the storefront to buy something

will add a test later
TagsNo tags attached.


Christian Grothoff

2021-04-12 15:12

manager   ~0017736

Are you still preparing a test for this? If so, please use your merchant.git/src/testing/ as a starting point (feel free to extend the script or to create another one).


2021-04-12 16:21

developer   ~0017737

No, I wasn't. But I can switch into this for a couple of minutes. Test on the way.


2021-04-12 22:56

developer   ~0017738

Is taking longer than I wanted to reproduce the error with a script. It happens 100% of time in my system so It seems more related to the environment configuration.
In order to make some progress, im adding more information here from a debugging session with gdb.

Its seems that after the merchant queries the exchange for the wire information it fails to get the fee from the account
important: fees is null at taler-merchant-httpd_exchanges.c:368

(gdb) frame 0
#0 0x00005594dd5a0d85 in process_wire_fees (exchange=0x5594dec79950, master_pub=0x5594dec954e8, wire_method=0x5594dec9c320 "x-taler-bank",
    payto_uri=0x5594deca41d0 "payto://x-taler-bank/bank.taler:5882/exchangeminator", fees=0x0) at taler-merchant-httpd_exchanges.c:368
368 (fees->start_date.abs_value_us < endp->end_date.abs_value_us) )
(gdb) frame 1
#1 0x00005594dd5a14d2 in process_wire_accounts (exchange=0x5594dec79950, master_pub=0x5594dec954e8, accounts_len=1, accounts=0x7ffe4ecd3710)
    at taler-merchant-httpd_exchanges.c:482
482 ec = process_wire_fees (exchange,
(gdb) frame 2
#2 0x00005594dd5a1a91 in handle_wire_data (cls=0x5594dec79950, hr=0x7ffe4ecd3910, accounts_len=1, accounts=0x7ffe4ecd3710)
    at taler-merchant-httpd_exchanges.c:663
663 ecx = process_wire_accounts (exchange,
(gdb) frame 3
#3 0x00007f5acb55fd36 in handle_wire_finished (cls=0x5594deca5cf0, response_code=200, response=0x5594dec9b090) at exchange_api_wire.c:332
332 exchange_api_wire.c: No such file or directory.
(gdb) frame 4


2021-04-13 14:05

developer   ~0017739

Reading the source code and seems an easy fix, Im doing some testing first and if its works i will push the fix.


2021-04-13 14:33

developer   ~0017740

fix in eaff762e..754ec646, please check

Christian Grothoff

2021-04-14 13:45

manager   ~0017741

Patch was good, thanks!

Issue History

Date Modified Username Field Change
2021-04-01 21:50 sebasjm New Issue
2021-04-01 21:50 sebasjm Status new => assigned
2021-04-01 21:50 sebasjm Assigned To => Christian Grothoff
2021-04-02 11:17 Christian Grothoff Priority normal => urgent
2021-04-02 11:17 Christian Grothoff Target Version git (master) => 0.9
2021-04-12 15:12 Christian Grothoff Note Added: 0017736
2021-04-12 16:21 sebasjm Note Added: 0017737
2021-04-12 22:56 sebasjm Note Added: 0017738
2021-04-13 14:05 sebasjm Note Added: 0017739
2021-04-13 14:33 sebasjm Status assigned => feedback
2021-04-13 14:33 sebasjm Note Added: 0017740
2021-04-14 13:45 Christian Grothoff Note Added: 0017741
2021-04-14 13:46 Christian Grothoff Status feedback => resolved
2021-04-14 13:46 Christian Grothoff Resolution open => fixed
2021-04-14 13:46 Christian Grothoff Fixed in Version => 0.9
2021-07-30 13:57 Christian Grothoff Fixed in Version 0.9 => 0.8.1
2021-07-30 13:59 Christian Grothoff Target Version 0.9 => 0.8.1
2021-07-30 14:01 Christian Grothoff Fixed in Version 0.8.1 => 0.8
2021-07-30 14:02 Christian Grothoff Target Version 0.8.1 => 0.8
2021-08-24 16:23 Christian Grothoff Status resolved => closed